2 回答
![?](http://img1.sycdn.imooc.com/5458471300017f3702200220-100-100.jpg)
TA贡献1798条经验 获得超7个赞
您基本上需要保留对最后添加的对象的引用。如果您当前尝试添加的对象是相同的,那么您应该跳过它。
以下是使用您的代码的样子:
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;
}
![?](http://img1.sycdn.imooc.com/545845b40001de9902200220-100-100.jpg)
TA贡献1810条经验 获得超4个赞
根据您的描述,您的代码似乎没有做您想做的事情。
我想要的是删除列表中彼此相邻的重复点,因此列表看起来像 { a, b, a, c, a }
以下代码应该可以完成工作:
public List<Point> getUniq() {
List<Point> l = new ArrayList<>();
l.add(pointList.get(0)); //the first element will always be added
for (int i = 1; i < pointList.size(); i++) {
if (!l.get(l.size()-1).equals(pointList.get(i))) {
l.add(pointList.get(i));
}
}
return l;
}
添加回答
举报