java - 在对对象 vector 进行排序时需要帮助

标签 java sorting object vector

public class Sorting {
    Vector<Talk> sorty(Vector <Talk> s) {
        Collections.sort(s);
        return s;
    }
}

我需要对 Talk 类的对象进行排序,但我一直收到错误 “绑定(bind)不匹配”。

Talk Class是这样的:

public class Talk {
    String name;
    int duration;

    public int compareTo(Talk t) {
         int compare = t.duration;
         return this.duration - compare; 
    }
} 

最佳答案

如果你想对包含它的列表进行排序,你的 Talk 类需要实现 Comparable 接口(interface):

public class Talk implements Comparable<Talk> {

请注意,通过将它们相减来比较 int 值是不安全的,除非您知道这两个值只会是正数(或不超过 Integer.MAX_VALUE 分开,准确地说)。原因是 int 会溢出并错误地变为负值,如果值比这更远。不会经常发生,但如果它真的发生了,就很难追踪错误,所以最好让自己习惯于替代方案。

更好的比较方法是调用 Integer.compare(int, int):

public int compareTo(Talk t) {   
    return Integer.compare(duration, t.duration);
}

关于java - 在对对象 vector 进行排序时需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35170395/

相关文章:

java - 如何使用 AWS X-Ray 通过 SQS 队列跟踪请求

javascript - 序列化一个javascript类对象?

javascript - 对嵌套对象的 javascript 数组进行排序

c# - 当另一个类只知道父类(super class)时,如何访问子类?

java - 有没有办法禁止将类用作 spring bean?

java - 如何从计时器触发路线

java - 使用许多方法实现接口(interface) = 巨大的类。模式来拯救?

algorithm - 从clrs书上看,插入排序for循环为什么要迭代n次?

python - 如何创建管理系统可以排序的 __unicode__ 字段?

java - 我的冒泡排序不起作用