gpt4 book ai didi

java - 比较两个对象的不同属性集

转载 作者:行者123 更新时间:2023-12-03 11:19:31 24 4
gpt4 key购买 nike

我有一个数据类。字段可以是集合、原语、引用等。我必须检查这个类的两个实例的相等性。通常我们会为此目的重写 equals 方法。但是用例是这样的,要比较的属性可能会有所不同。
所以说,A 类具有以下属性:

int name:
int age:
List<String> hobbies;
在一次调用中,我可能必须根据姓名、年龄检查相等性,而对于另一次调用,我可能必须检查姓名、爱好的相等性。
实现这一目标的最佳实践是什么?

最佳答案

假设您希望始终通过 2 个属性进行比较,那么对于 Java 8,最好使用一流的函数。

private boolean equalNameAndAge(A a1, A a2) {
return compareByTwoParameters(a1, a2, A::getName, A::getAge);
}

private boolean equalNameAndHobbies(A a1, A a2) {
return compareByTwoParameters(a1, a2, A::getName, A::getHobbies);
}

private boolean compareByTwoParameters(A a1, A a2, Function<A, ?>... functions) {
if (a1 == null || a2 == null) {
return a1 == a2;
}
for (Function<A, ?> function : functions) {
if (!Objects.equals(function.apply(a1), function.apply(a2))) {
return false;
}
}
return true;
}

关于java - 比较两个对象的不同属性集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66047276/

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