对于Long类型,方法compare(long,long)是未定义的

时间:2013-11-23 13:51:52

标签: java comparator

我需要让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类型。”

好像我做错了。

2 个答案:

答案 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。*。