繁体   English   中英

按比较器对ArrayList排序

[英]Sorting ArrayList by comparator

我有一个包含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上出现此错误:Arrays类型中的sort(T [],Comparator)方法不适用于参数(ArrayList,myComp)如何解决此问题?

moveList是一个列表,而不是数组,请使用Collections的sort方法:

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

您可以使用List.sort​(Comparator<? super E> c)将其简化为:

moveList.sort(Comparator.comparingDouble(CoolMove::getValue));

对列表进行排序(JDK 8.0)

moveList.sort(new myComp());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM