Сортировка ArrayList по компаратору - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть ArrayList, содержащий элементы CoolMove, и я хочу отсортировать его по значениям, возвращаемым CoolMove.getValue () (это значения типа Doubles).Я прочитал, что вы можете сортировать, используя класс компаратора, и в попытке сделать это я сделал следующее:

У меня есть 2 класса, один из которых имеет следующие строки кода:

ArrayList<CoolMove> moveList = getMoves();
Arrays.sort(fishMoves, new myComp());

Мой второйclass это компаратор:

class myComp implements Comparator<CoolMove> {

    @Override
    public int compare(CoolMove move1, CoolMove move2) {
        return Double.compare(move1.getValue(), move2.getValue());
    }
}

Моя проблема в том, что на Arrays.sort я получаю эту ошибку: Метод sort (T [], Comparator) в типе Arrays не применим для аргументов (ArrayList,myComp) Как я могу это исправить?

Ответы [ 3 ]

0 голосов
/ 03 декабря 2018

Сортировка списка (JDK 8.0)

moveList.sort(new myComp());
0 голосов
/ 03 декабря 2018

Вы можете упростить все это, используя List.sort​(Comparator<? super E> c) как:

moveList.sort(Comparator.comparingDouble(CoolMove::getValue));
0 голосов
/ 03 декабря 2018

moveList - это список, а не массив, используйте метод сортировки из Collections:

Collections.sort(moveList, new myComp());
...