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