Comparator – int无法解除引用

所以我在这里看到一个例子如何使用Comparator接口对ArrayList进行排序,所以我试了一下。 使用Strings它可以很好地工作,但是我想要将一个变量排序为Integer,它将无法编译,说“int不能被解除引用”。

我能做些什么才能使用,并允许我按分数变量对ArrayList进行排序?

这是我的代码:

public class ScoreComparator implements Comparator { @Override public int compare(Review o1, Review o2) { return o1.getScore().compareTo(o2.getScore()); } } 

谢谢您的帮助!

你不能在int上调用方法; 没有compareTo方法可以调用。 这将是盒装的Integer类型,但拳击将是矫枉过正。

如果你使用Java 7+,你应该写

 return Integer.compare(o1.getScore(), o2.getScore()); 

…否则你或多或少需要写

 if (o1.getScore() < o2.getScore()) { return -1; } else if (o1.getScore() > o2.getScore()) { return 1; } else { return 0; } 

Fyi,虽然这没有回答关于int解除引用错误的具体问题,但在Java 8中根本不需要专用的比较器类。 你可以简单地写:

 yourList.sort((r1, r2) -> Integer.compare(r1.getScore(), r2.getScore())); 

要么

 yourList.sort(Comparator.comparingInt(Review::getScore)); 

两者都是更好的方法。

试试这个:

 public class ScoreComparator implements Comparator { @Override public int compare(Review o1, Review o2) { return (o1.getScore()