因此,我在这里看到了一个示例,该示例如何使用Comparator接口对ArrayList进行排序,因此我进行了尝试。使用Strings可以很好地工作,但是我要排序的一个变量是Integer,它将无法编译,并说“不能取消引用int”。
我该怎么做才能使它起作用,并允许我按score变量对ArrayList进行排序?
这是我的代码:
public class ScoreComparator implements Comparator<Review> { @Override public int compare(Review o1, Review o2) { return o1.getScore().compareTo(o2.getScore()); } }
谢谢您的帮助!
您不能在上调用方法int;没有compareTo可以调用的方法。那将是盒装Integer类型的,但是装箱将是过大的。
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; }