2

我正在尝试使用可比较的接口对对象的 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值为.positionzero

如何修改compareTo方法?

4

1 回答 1

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]

于 2013-07-15T15:02:49.570 回答