通过比较器对 ArrayList 进行排序
Sorting ArrayList by comparator
我有一个包含 CoolMove 元素的 ArrayList,我想按值 CoolMove.getValue() returns(这些值是双精度值)对其进行排序。我读到你可以使用比较器 class 进行排序,为了做到这一点,我做了以下操作:
我有 2 个 classes,其中一个有这些代码行:
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 我得到这个错误:
Arrays 类型中的方法 sort(T[], Comparator) 不适用于参数 (ArrayList, myComp)
我该如何解决这个问题?
moveList
是列表而不是数组,使用 Collections
:
中的排序方法
Collections.sort(moveList, new myComp());
对列表进行排序 (JDK 8.0)
moveList.sort(new myComp());
您可以使用 List.sort(Comparator<? super E> c)
简化所有内容:
moveList.sort(Comparator.comparingDouble(CoolMove::getValue));
我有一个包含 CoolMove 元素的 ArrayList,我想按值 CoolMove.getValue() returns(这些值是双精度值)对其进行排序。我读到你可以使用比较器 class 进行排序,为了做到这一点,我做了以下操作:
我有 2 个 classes,其中一个有这些代码行:
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 我得到这个错误: Arrays 类型中的方法 sort(T[], Comparator) 不适用于参数 (ArrayList, myComp) 我该如何解决这个问题?
moveList
是列表而不是数组,使用 Collections
:
Collections.sort(moveList, new myComp());
对列表进行排序 (JDK 8.0)
moveList.sort(new myComp());
您可以使用 List.sort(Comparator<? super E> c)
简化所有内容:
moveList.sort(Comparator.comparingDouble(CoolMove::getValue));