如何判断两个集合内容是否相等?
这个问题考虑的几个点:
1.size是否相同
2.元素是否相同(废话)
不多写了直接贴代码:
/**
* 判断集合元素是否相同
* @param list_a 集合a
* @param list_b 集合b
* @param <Q> 泛型
* @return
*/
public static <Q> boolean equals(List<Q> list_a, List<Q> list_b) {
//非空判断还是要的
if (list_a == null || list_a.isEmpty()) {
return false;
}
if (list_b == null || list_b.isEmpty()) {
return false;
}
//size判断
if (list_a.size() != list_b.size()) {
System.out.println("size is not equal,return false!");
return false;
}
Q a;
Q b;
for (int i = 0; i < list_a.size(); i++) {
a = list_a.get(i);
for (int x = list_b.size() - 1; x >= 0; x--) {//这个是重点,要倒序遍历
b = list_b.get(x);
System.out.println("list_a is" + a + " list_b is" + b);
if (a.equals(b)) {//remove相等的元素
System.out.println("有一个元素的值是相等的");
list_b.remove(b);
break;
} else {
if (x == 0) {
System.out.println("没有一个元素是相等的");
return false;
}
}
}
}
return true;
}
贴下测试数据:
List<String> a = new ArrayList<>();
a.add("a");
a.add("b");
a.add("a");
a.add("b");
a.add("a");
a.add("b");
List<String> b = new ArrayList<>();
b.add("a");
b.add("b");
b.add("a");
b.add("b");
b.add("b");
b.add("a");
System.out.println("result is" + equals(a, b));
结果:
2.1\b6a365ff1138e096e33bd88585bb8d8a\interpolator-28.0.0\jars\classes.jar" com.hhcui.Test
list_a isa list_b isa
有一个元素的值是相等的
list_a isb list_b isa
list_a isb list_b isb
有一个元素的值是相等的
list_a isa list_b isa
有一个元素的值是相等的
list_a isb list_b isa
list_a isb list_b isb
有一个元素的值是相等的
list_a isa list_b isa
有一个元素的值是相等的
list_a isb list_b isb
有一个元素的值是相等的
result istrue
Process finished with exit code 0
凑合看吧,看了别人写的感觉有点问题,自己在基础上改了下,如果有问题,感谢指出,谢谢。
本文探讨如何在Java中判断两个List集合的内容是否相等,主要考虑点包括集合的size相同以及元素完全一致。通过示例代码进行说明,并提供了测试数据和预期结果。
3260

被折叠的 条评论
为什么被折叠?



