写作更好吗?
int primitive1 = 3, primitive2 = 4;
Integer a = new Integer(primitive1);
Integer b = new Integer(primitive2);
int compare = a.compareTo(b);
Run Code Online (Sandbox Code Playgroud)
要么
int primitive1 = 3, primitive2 = 4;
int compare = (primitive1 > primitive2) ? 1 : 0;
if(compare == 0){
compare = (primitive1 == primitive2) ? 0 : -1;
}
Run Code Online (Sandbox Code Playgroud)
我认为第二个更好,应该更快,更多的内存优化.但他们不是一样的吗?
我正在做一些作业,但遇到了一个问题。
我得到了这个示例代码:
public class PersonNameComparator implements Comparator<Person>{
public int compare(Person p1, Person p2) {
int retValue = p1.getName().compareTo(p2.getName());
if (retValue != 0)
return retValue;
else if (p1.getAge() < p2.getAge())
return -1;
else if (p1.getAge() > p2.getAge())
return 1;
else
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样做时,会发生这种情况:
public class DVDComparator implements Comparator <DVD> {
public int compare(DVD d1,DVD d2)
{
int stars1 = d1.getNoOfStars().compareTo(d2.getNoOfStars());
//ERROR - int cannot be dereferenced.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
所以我在这里看到一个例子如何使用Comparator接口对ArrayList进行排序,所以我试了一下.使用Strings它完美地工作,但是我想要将一个变量排序为Integer,它将无法编译,说"int不能被解除引用".
我该怎么做才能使这个工作并允许我按分数变量对ArrayList进行排序?
这是我的代码:
public class ScoreComparator implements Comparator<Review> {
@Override
public int compare(Review o1, Review o2)
{
return o1.getScore().compareTo(o2.getScore());
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!