2015-12-15 31 views
0

我有一个小问题,我希望你能帮我解决它。Java:我如何排序对象列表?

我有一个叫做实体类,它有几个属性,其中的两个属性是ID实用

public class Entity implements Comparable <Entity> { 

    int id; 
    int utility; 

} 

然后,我有几个实体对象一个ArrayList里面,像这样:

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

现在,我想对基于UTILITY实体的列表进行排序。我试了soluctions像这样的,我读到这里,使用自定义比较:

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无法提领我不知道如何解决它。你们能帮我解决这个问题吗?或者给出另一种解决方案?谢谢。

+0

对不起,我发现了几个主题,但我没有看到比较问题。 – Removed

+0

我真的好奇你为什么创建一个'Comparator',当你的'Entity'已经实现'Comparable'时。 – Tom

回答

1

你必须使用包装类型:

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

实际上,你可以省略b.utility明确皈依Integer,因为它总要被autoboxed。

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

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

在没有拳击将参与其中。

+0

谢谢你,我用你的第二个代码,错误消失了。但另一个小问题是:Collections.sort(blabla,我贴出来的代码,修改后的c)没有排序我的列表,它什么也不做。我必须打个电话才能订购清单?对不起,白痴问题 – Removed

+0

用适当的参数调用'Collections.sort()'应该对你的列表进行排序。不需要额外的工作。尝试在排序和/或调试之后打印列表。 –

+0

没事,问题解决了,帮助太大了!谢谢kocko! ^^ – Removed