gpt4 book ai didi

java - 删除彼此相邻的重复项

转载 作者:行者123 更新时间:2023-12-02 10:36:36 25 4
gpt4 key购买 nike

我有一个 list : private static List<Point> pointList = new ArrayList<>(); .

Point = 代表 3D 图中一个点的对象。

我可以用方法比较点:

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Point point = (Point) o;
return Arrays.equals(position, point.position);
}

假设我的列表如下所示:{ a1, a2, b1, a3, c1, c2, a4 }

所有对象都是不同的对象(a1 =/= a2..),但具有相同的值(a1,a2...代表图表上完全相同的点)

我想要是删除重复的 Points在列表中彼此相邻,因此列表看起来像 { a, b, a, c, a }

我尝试过:

public List<Point> getUniq() {
List<Point> l = new ArrayList<>();
for (int i = 0; i < pointList.size()-1; i++) {
if (pointList.get(i).equals(pointList.get(i + 1))) {
l.add(pointList.get(i));
}
}
return l;
}

但我缺少元素。

最佳答案

您基本上需要保留对最后添加的对象的引用。如果您当前尝试添加的对象相同,那么您应该跳过它。

这是使用您的代码的样子:

public List<Point> getUniq() {
List<Point> result = new ArrayList<>();
Point lastAdded = null;
for (int i = 0; i < pointList.size(); i++) {
if (!points.get(i).equals(lastAdded)) { // previously added point was different
lastAdded = points.get(i); // update previously added
result.add(lastAdded); // add to result
}
}
return result;
}

关于java - 删除彼此相邻的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com