Java:如何对对象列表进行排序?

标签 java object arraylist collections compareto

我有一个小问题,希望你能帮我解决。

我有一个名为 Entity 的类,它有多个属性,其中两个属性是 idutility:

public class Entity implements Comparable <Entity> {

  int id;
  int utility;

}

然后,我在 ArrayList 中有几个 Entity 对象,如下所示:

ArrayList<Entity> sorted_entities = new ArrayList<Entity>
//added entities

现在,我想根据实用程序实体对列表进行排序。我使用自定义比较器尝试了几种解决方案,例如我在这里阅读的解决方案:

Collections.sort(sorted_entities, new Comparator<Entity>() {

public int compare(Entity a, Entity b) {
    return a.utility.compareTo(b.utility);
}

});

但是在这一行:

return a.utility.compareTo(b.utility);

我遇到了以下错误:int 无法取消引用,我不知道如何修复它。你们能帮我解决这个问题或者提供其他解决方案吗?谢谢。

最佳答案

您必须使用包装类型:

return Integer.valueOf(a.utility).compareTo(Integer.valueOf(b.utility));

您实际上可以省略将 b.utility 显式转换为 Integer,因为无论如何它都会自动装箱。

或者(甚至更好),您也可以这样做:

return Integer.compare(a.utility, b.utility);

不涉及拳击的地方。

关于Java:如何对对象列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298833/

相关文章:

java - 为什么我的应用程序此时崩溃了?

java - 如何正确打印参数名称?

java - 动态选择从 json 创建对象的类

java - 获取用户输入并将其分配给对象

java - 类型不匹配错误 : convert ArrayList<SubClass1> to List<SuperClass>? 的原因

java - CustomList<T extends A> 类型不匹配

java - 如何使用 jBCrypt 比较来自 2 个 servlet 的散列密码

java - 注释打印行会导致逻辑发生变化

java - 从 JXTreeTable 中获取选定的值

javascript - 函数返回 undefined object