java代码比较两个list集合中的对象属性值是否相等,如果list中包含list则递归比较
时间: 2023-08-04 22:09:16 浏览: 114
可以使用递归方式比较两个List集合中的对象属性值是否相等,如果List中包含List,则递归比较。下面是一个示例代码:
```java
public class CompareList {
public static boolean compare(List<?> list1, List<?> list2) {
if (list1 == null && list2 == null) { // 如果两个List都为null,则认为它们相等
return true;
}
if (list1 == null || list2 == null) { // 如果其中一个List为null,则认为它们不相等
return false;
}
if (list1.size() != list2.size()) { // 如果两个List的长度不相等,则认为它们不相等
return false;
}
for (int i = 0; i < list1.size(); i++) {
Object obj1 = list1.get(i);
Object obj2 = list2.get(i);
if (obj1 == null && obj2 == null) { // 如果两个对象都为null,则认为它们相等
continue;
}
if (obj1 == null || obj2 == null) { // 如果其中一个对象为null,则认为它们不相等
return false;
}
if (!obj1.getClass().equals(obj2.getClass())) { // 如果两个对象的类型不相同,则认为它们不相等
return false;
}
if (obj1 instanceof List && obj2 instanceof List) { // 如果两个对象都是List类型,则递归比较
if (!compare((List<?>) obj1, (List<?>) obj2)) {
return false;
}
} else if (!obj1.equals(obj2)) { // 如果两个对象不相等,则认为它们不相等
return false;
}
}
return true;
}
}
```
使用示例:
```java
List<Object> list1 = new ArrayList<>();
list1.add("a");
list1.add(1);
List<Object> sublist1 = new ArrayList<>();
sublist1.add("b");
sublist1.add(2);
list1.add(sublist1);
List<Object> list2 = new ArrayList<>();
list2.add("a");
list2.add(1);
List<Object> sublist2 = new ArrayList<>();
sublist2.add("b");
sublist2.add(2);
list2.add(sublist2);
System.out.println(CompareList.compare(list1, list2)); // 输出true
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)