删除彼此相邻的重复项

时间:2018-11-11 14:54:01

标签: java list object duplicates

我有一个列表: res.send(req.signedCookies.cookie1);

private static List<Point> pointList = new ArrayList<>(); =表示3D图形中一个点的对象。

我可以将点数与方法进行比较:

Point

可以说我的列表如下:{a1,a2,b1,a3,c1,c2,a4}

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

我想要的是删除列表上彼此相邻的重复@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); } ,所以列表看起来像{a,b,a,c,a}

我尝试过:

Points

但是我缺少元素。

2 个答案:

答案 0 :(得分:1)

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

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

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;
}

答案 1 :(得分:0)

根据您的描述,您的代码似乎没有满足您的要求。

  

我想要的是删除彼此相邻的重复点   在列表上,所以列表看起来像{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;
}