判断两个list集合里的对象某个属性值是否一样_Java基础系列——集合
时间: 2023-11-12 12:09:08 浏览: 128
Java判断2个List集合是否相等(不考虑元素的顺序)
5星 · 资源好评率100%
判断两个list集合里的对象某个属性值是否一样可以按照以下步骤进行:
1. 遍历第一个list集合,以该对象的某个属性值为key,将对象存入一个Map中。
2. 遍历第二个list集合,以该对象的某个属性值为key,从Map中获取该key对应的对象,进行比较。
3. 如果两个对象的属性值相同,则说明两个list集合里的对象某个属性值是一样的。
下面是Java代码实现:
```java
public boolean isSameProperty(List<Object> list1, List<Object> list2, String property) {
Map<Object, Object> map = new HashMap<>();
for (Object obj : list1) {
try {
Field field = obj.getClass().getDeclaredField(property);
field.setAccessible(true);
Object key = field.get(obj);
map.put(key, obj);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
for (Object obj : list2) {
try {
Field field = obj.getClass().getDeclaredField(property);
field.setAccessible(true);
Object key = field.get(obj);
Object obj1 = map.get(key);
if (obj1 != null) {
if (obj.equals(obj1)) {
return true;
}
}
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
return false;
}
```
使用示例:
```java
List<User> list1 = new ArrayList<>();
list1.add(new User("张三", 20));
list1.add(new User("李四", 30));
List<User> list2 = new ArrayList<>();
list2.add(new User("王五", 20));
list2.add(new User("赵六", 30));
boolean isSameAge = isSameProperty(list1, list2, "age");
System.out.println("isSameAge: " + isSameAge); // true
```
其中,User类实现了equals和hashCode方法。
阅读全文