【问题标题】:Sorting ArrayList by comparator按比较器对 ArrayList 进行排序
【发布时间】:2018-12-03 23:12:49
【问题描述】:

我有一个包含 CoolMove 元素的 ArrayList,并希望按 CoolMove.getValue() 返回的值对其进行排序(这些值是双精度值)。我读到您可以使用比较器类进行排序,为了做到这一点,我做了以下操作:

我有 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) 我该如何解决这个问题?

【问题讨论】:

标签: java arraylist comparator


【解决方案1】:

moveList 是列表而不是数组,请使用Collections 中的排序方法:

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

【讨论】:

    【解决方案2】:

    您可以使用List.sort​(Comparator&lt;? super E&gt; c)as 来简化所有操作:

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

    【讨论】:

      【解决方案3】:

      对列表进行排序(JDK 8.0)

      moveList.sort(new myComp());
      

      【讨论】:

      • 值得一说,这个只有JDK8才有
      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 2020-05-17
      • 1970-01-01
      • 2017-02-24
      • 2018-11-25
      • 2012-01-21
      • 2014-04-14
      相关资源
      最近更新 更多