我有一点问题,希望你能帮我解决。
我有一个名为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。
答案 0 :(得分:1)
您必须使用包装类型:
return Integer.valueOf(a.utility).compareTo(Integer.valueOf(b.utility));
您实际上可以省略b.utility
到Integer
的显式转换,因为无论如何它都会自动生成。
或者(甚至更好),您也可以这样做:
return Integer.compare(a.utility, b.utility);
不涉及拳击。