从 ArrayList 中删除重复的元组 - Java

Remove duplicate Tuples from an ArrayList- Java

我想要一个没有重复的唯一元组列表。

List <Tuple>  newNonZeros = new ArrayList<>(); 

在 newNonZeroes 中是结果:[(0,2)(1,2)(1,2)(1,1)(2,2)(2,2)(2,1)]

这是我的尝试:

List <Tuple> newList = new ArrayList<>();
newList.add(newNonZeros.get(0));

for(int i=1; i < newNonZeros.size();i++){
    if(newNonZeros.get(i-1)!= newNonZeros.get(i)){
        newList.add(newNonZeros.get(i));
    }
}

没用。谁能帮帮我...这是一个非常简单的问题

我也试过下面的方法:

...newNonZeros.stream().distinct().collect(Collectors.toList());

覆盖 equalshashCode Tuple class:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Tuple tuple = (Tuple) o;
    return first == tuple.first &&
            second == tuple.second;
}

@Override
public int hashCode() {
    return Objects.hash(first, second);
}

那么你可以使用:

List<Tuple> newList = newNonZeros.stream()
                               .distinct()
                               .collect(Collectors.toList());

或者使用 for-each 循环:

List<Tuple> newList = new ArrayList<>();
for(Tuple tuple : newNonZeros) {
    if(!newList.contains(tuple)) {
        newList.add(tuple);
    }
}