gpt4 book ai didi

java - 对象集包含具有值的对象(不是引用)(java 7)

转载 作者:行者123 更新时间:2023-11-30 07:55:26 24 4
gpt4 key购买 nike

我的对象有一些字段。

public class MyObject{

private String a;
private String b;

}

我有一个 Set 包含这样的对象:

Set<MyObject> thirdSet = new HashSet<MyObject>();

Set<MyObject> firstSet=getFirstSet();

Set<MyObject> secondSet = getSecondeSet();


for (MyObjectobj : firstSet) {
if (!secondSet.contains(obj)) {
thirdSet.add(obj);
}
}

我需要将所有不包含在我的 secondSet 中的对象选择到 thridSet 中(值不是通过引用的对象)有可能还是使用集合更好?

最佳答案

您需要覆盖对象中的 equals 和 hashcode 方法。如果可以防止 NullPointerExceptions,我建议使用 Java 7 Objects 实用程序方法。

@Override
public boolean equals(Object other) {
if (!(other instanceof MyObject)) {
return false;
}
MyObject that = (MyObject) other;
return Objects.equals(a, that.a) && Objects.equals(b, that.b);
}

@Override
public int hashcode() {
Objects.hash(a, b);
}

我还建议您尽可能查看第三方库 Guava,这将简化您的代码。

Set<MyObject> thirdSet = new HashSet<>(Sets.difference(firstSet, secondSet));

注意将它包装在一个新的 HashSet 中,以便它可以被修改(如果你不需要修改它,你可以删除它)

关于java - 对象集包含具有值的对象(不是引用)(java 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43210407/

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