【发布时间】:2015-02-22 12:06:09
【问题描述】:
我正在尝试从我的数组中删除重复的对象。
我有我的自定义,它由两个双精度:x 和 y。
我想要做的是删除重复的 ( (x && y) == (x1 && y1)) 并且如果 x == x1 我想保留具有更高 y 的对象。
ArrayList<MyObject> list = [x(0),y(0)], [x(0),y(0)], [x(0.5),y(0.5], [x(0.5),y(0.6)], [x(1),y(1)];
ArrayList<MyObject> results = [x(0),y(0)], [x(0.5),y(0.6)], [x(1),y(1)];
我尝试实现 equals 方法,但我不知道如何使用它:
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof MyObject)) {
return false;
}
return (this.x == ((MyObject)obj).x);
}
列表总是使用 Collections.sort by x 排序的。
谢谢大家。
【问题讨论】:
-
通常,
x == x+1永远不会是真的。您的意思可能是x == x1并将其与您的列表中具有相同x值的条目连续存储的事实混为一谈。 -
现在,如果您在 x 和 y 上正确排序您的项目,问题就变得微不足道了。
-
与其覆盖
equals(Object other),不如创建一个Comparator。
标签: java android algorithm sorting arraylist