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);

上面将从位置0开始对所有单位进行排序,但我希望它从位置1开始,因为位置的默认值是

如何修改 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 - 无法在 API 23 及更低版本上下载 PDF 文件

java - 使用 Gradle 构建 EAR,在 WAR 之间共享依赖关系

python - 排序、打开和写入文件

Java ArrayList 搜索和删除

java - 一个方法使用数组并返回一个数组,但我使用的是数组列表

java - 不使用 size() 方法的 LinkedList Spliterator

java - 尝试播放音频文件时 JLayer 异常

c - 如何获取命令sort的排序矩阵?

javascript - 如何使用多个键按对象的值对对象进行排序?

java - 如何在Java中声明参数化对象数组?