我需要让Comparator按其long
类型的变量之一对对象列表进行排序。
public class ParticipantIndexComparator implements Comparator<Integer> {
final List<Participant> participants;
public ParticipantIndexComparator(ArrayList<Integer> numbersToSort) {
participants=new ArrayList<Participant>();
for (int i=0;i<numbersToSort.size();i++)
{ participants.add(i,competition.participant.get(numbersToSort.get(i))); participants.get(i).comparator=numbersToSort.get(i);}
}
@Override
public int compare(Integer i1, Integer i2) {
long l1 = participants.get(i1).kpTime.get(kpSelected);
long l2 = participants.get(i2).kpTime.get(kpSelected);
return Long.compare(l1, l2);
}
}
但return Long.compare(l1, l2);
无效 - “方法比较(long,long)未定义为Long类型。”
好像我做错了。
答案 0 :(得分:25)
此方法自Java 7以来就存在。您可能正在使用Java 6甚至更早版本的Java。在以前的版本中,您只需使用
即可Long.valueOf(l1).compareTo(Long.valueOf(l2));
javadoc是你的朋友。阅读它。
答案 1 :(得分:1)
如果在将Maven项目导入Eclipse后遇到未定义的Integer.compare,请检查项目属性以确保它使用的是1.7 JRE。出于某种原因,导入将1.6 JRE与我的项目相关联,即使是POM,我的系统默认值为1.7。*。