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

时间:2015-12-15 20:30:58

标签: java object arraylist collections compareto

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

我有一个名为Entity的类,它有几个属性,其中两个属性是 id 实用程序

public class Entity implements Comparable <Entity> {

  int id;
  int utility;

}

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

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

现在,我想基于UTILITY实体对列表进行排序。我尝试了几个这样的解决方案,我在这里阅读,使用自定义比较器:

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无法解除引用,我不知道如何修复它。你们能帮助我解决这个问题还是给出另一种解决方案? THX。

1 个答案:

答案 0 :(得分:1)

您必须使用包装类型:

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

您实际上可以省略b.utilityInteger的显式转换,因为无论如何它都会自动生成。

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

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

不涉及拳击。