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()