通过比较器对 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));