首页 > 解决方案 > 删除列表 Java 中的重复对象

问题描述

我有课:

class MyClass {
    String s1;
    String s2;
}

列表对象包括

[{s1:“a”,s2:“b”},{s1:“a”,s2:“c”},{s1:“a”,s2:“b”},{s1:“a”, s2:“d”}]

我想删除对象重复 2 属性 s1 和 s2

预期结果:

[{s1:“a”,s2:“b”},{s1:“a”,s2:“c”},{s1:“a”,s2:“d”}]

如果能用Java 8就更好了

帮我 :(

标签: javalist

解决方案


首先覆盖你喜欢的equalsandhashCode方法,MyClass

@Override
public int hashCode() {
    return 31 * s1.hashCode() + s2.hashCode();
}

@Override
public boolean equals(Object obj) {
    return obj instanceof MyClass && ((MyClass) obj).getS1().equals(getS1())
            && ((MyClass) obj).getS2().equals(getS2());
}

那么消除重复的最简单方法是使用Set.

new HashSet<>(instances)


推荐阅读