java判断两个不同长度的集合,其中有一个相同属性,判断这个相同属性的值是否相等
时间: 2023-08-07 12:02:01 浏览: 71
判断两个不同长度的集合中一个相同属性的值是否相等,可以先判断两个集合是否为空,然后遍历较小的集合,比较每个元素相同属性的值是否在另一个集合中存在相等的元素。具体实现可以参考以下代码:
```java
public boolean compareCollections(List<Object> list1, List<Object> list2, String propertyName) {
// 判断两个集合是否为空
if (list1 == null || list2 == null) {
return false;
}
// 获取较小的集合
List<Object> smallerList = list1.size() <= list2.size() ? list1 : list2;
List<Object> largerList = list1.size() > list2.size() ? list1 : list2;
for (Object obj1 : smallerList) {
try {
// 反射获取对象的属性值
Field field = obj1.getClass().getDeclaredField(propertyName);
field.setAccessible(true);
Object value1 = field.get(obj1);
// 遍历较大的集合,比较相同属性值是否相等
boolean isMatched = false;
for (Object obj2 : largerList) {
Object value2 = field.get(obj2);
if (Objects.equals(value1, value2)) {
isMatched = true;
break;
}
}
if (isMatched) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
return false;
}
```
其中,list1 和 list2 分别为需要比较的两个集合,propertyName 为需要比较的属性名。该方法返回一个 boolean 值,表示两个集合中是否存在相同属性的值。在实现过程中,我们先获取较小的集合,然后遍历该集合,比较相同属性的值是否存在于较大的集合中。如果找到相等的元素,则返回 true。如果遍历完较小的集合还没有找到相等的元素,则返回 false。
阅读全文