Как создать 2 разных компаратора для сортировки 2 ArrayLists? Первый список сначала сортируется по номеру строки, затем номеру столбца.Создание четырех разных компараторов
[(0,1,A), (1,1,A), (1,2,A), (2,1,A)] // Longest sequence of row-adjacent elements has size 2
Второй список сортируется по первому номеру столбца, затем номер строки.
[(0,1,A), (1,1,A), (2,1,A), (1,2,A)] // Longest sequence appears as adjacent elements, size 3
У меня ArrayList<RowColElem<T>> rowElems
, который должен сортировать по количеству строк первой затем номер столбца; и ArrayList<RowColElem<T>> colElems
, который должен сначала отсортировать по номеру столбца, затем номер строки. ПРИМЕЧАНИЕ. Оба arraylists содержат одни и те же элементы, но в несортированном порядке (то есть, чтобы они были добавлены), и я должен их сортировать, но не знаю, как реализовать 2 компаратора. Как мне создать 2 компаратора?
public class Board{
..............
..................
ArrayList<<T>> rowsElems; //Already contains information
ArrayList<<T>> colsElems; //Already contains information
public List<m<T>> ColOrder(){
//needs to sort rowElems
}
public List<<T>> elementsInColRowOrder(){
//needs to sort colElems
}
}
Вы пытались [написать «Компаратор»] (https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html) и использовать 'Collections.sort' для сортировки списков уже? –
Моя проблема в том, что если я хочу сделать сортировку более 2 раз? Должен ли я создать 4 разных класса Comparator? –
Что вы имеете в виду, сортируя более 2 раз? Для достижения заказа «номер строки сначала, а затем номер столбца» вам нужен только один _sort_, но с помощью «Comparator», который сначала сравнивает значения 'getRow()' для разных 'RowColElem' и только если строки равны, сравниваются значения 'getCol()' этих элементов. Компаратор 'SENIORITY_ORDER' в связанном учебнике является примером, где два свойства сравниваемых объектов используются для определения порядка. –