Java - 修改 compareTo 方法以从 1 开始对整数进行排序

原文 标签 java sorting arraylist

我正在尝试使用可比较的接口(interface)对对象的 ArrayList 进行排序:

public class Unit implements Comparable<Unit>{
    // attributes
    int position;
    @Override
    public int compareTo(Unit other) {
        return Integer.compare(position, other.position);
    }
}

现在我使用以下方法对 ArrayList 进行排序:
List<Unit> units = getAllUnits();
Collections.sort(units);

以上将对所有从position 0开始的单位进行排序但我希望从 position 1 开始因为 position 的默认值是 zero .

如何修改 compareTo方法?

最佳答案

(使用您评论中的信息,不会有负数,)您应该能够使用它:

public int compareTo(Unit other) {
    if (position != other.position) {
        if (position == 0) {
            return 1;
        } else if (other.position == 0) {
            return -1;
        }
        return Integer.compare(position, other.position);
    } else {
        return 0;
    }
}

更新:它也适用于负数,示例输出:[-1, 1, 2, 0, 0]

关于Java - 修改 compareTo 方法以从 1 开始对整数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17657262/

相关文章:

java - Java,如何在输入为空时打破循环?

java - 迭代器Java嵌套循环

c++ - 在C中合并2个排序的数组

performance - 在Elasticsearch中排序

java - 在Java中的两个大(大小~900K)字符串 vector 之间找到孤儿的最快方法是什么?

java - 使用 Jsoup 检索 sessionId cookie 的问题

java - Lock.tryLock() 的用例

jquery - jQuery UI可排序用于巨型列表并保存在数据库中

java - 创建参数为类和通用ArrayList的方法

java - 即使元素存在于arraylist中,IndexOutOfBoundsException