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

时间:2013-07-15 14:55:43

标签: java sorting arraylist

我正在尝试使用类似的界面对对象的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方法?

1 个答案:

答案 0 :(得分:3)

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

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]