相关疑难解决方法(0)

compareTo with primitives - > Integer/int

写作更好吗?

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)

我认为第二个更好,应该更快,更多的内存优化.但他们不是一样的吗?

java performance compareto

62
推荐指数
4
解决办法
14万
查看次数

Comparator compare method() int 不能取消引用

我正在做一些作业,但遇到了一个问题。

我得到了这个示例代码:

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)

有任何想法吗?

java int compiler-errors comparator dereference

3
推荐指数
1
解决办法
1万
查看次数

Comparator - int无法解除引用

所以我在这里看到一个例子如何使用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)

谢谢您的帮助!

java

1
推荐指数
1
解决办法
2034
查看次数