我有一个包含CoolMove元素的ArrayList,并希望按CoolMove.getValue()返回的值(这些值为Doubles)对其进行排序。我读到您可以使用比较器类进行排序,并尝试执行以下操作:
我有2个类,其中一个具有以下代码行:
ArrayList<CoolMove> moveList = getMoves();
Arrays.sort(fishMoves, new myComp());
我的二等班是这个比较器:
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)不适用于参数(ArrayList,myComp) 我该如何解决?
答案 0 :(得分:3)
moveList
是一个列表,而不是数组,请使用Collections
中的排序方法:
Collections.sort(moveList, new myComp());
答案 1 :(得分:1)
您可以使用List.sort(Comparator<? super E> c)
将其简化为:
moveList.sort(Comparator.comparingDouble(CoolMove::getValue));
答案 2 :(得分:0)
排序列表(JDK 8.0)
moveList.sort(new myComp());