一,实现
package list.demo;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;/**
* 判断两个集合是否相等
*/
public class CheckDiffList implements Serializable {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
List<String> list1 = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
list.add("test" + i);
list1.add("test" + (i * 2));
}
System.out.println(checkDiffrent(list, list1));
}/**
* 方法一:使用循环遍历
*/
private static boolean checkDiffrent(List<String> list, List<String> list1) {
long st = System.nanoTime();
if(list.size() != list1.size()) {
System.out.println("消耗时间:" + (System.nanoTime() - st));
return false;
}
for(String str : list) {
if(!list1.contains(str)) {
System.out.println("消耗时间:" + (System.nanoTime() - st));
return false;
}
}
System.out.println("消耗时间:" + (System.nanoTime() - st));
return true;
}
}
返回结果为:
消耗时间为: 16657988 false
2. 使用List的retainAll方法进行比较
package list.demo;
import java.io.Serializable;
import java.util.*;
import java.util.stream.Collectors;/**
* 判断两个集合是否相等
*/
public class CheckDiffList implements Serializable {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
List<String> list1 = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
list.add("test" + i);
list1.add("test" + (i * 2));
}
System.out.println(checkDiffrent1(list, list1));
}/**
* 方法2:利用List的 retainAll的方法进行判断
*/
private static boolean checkDiffrent1(List<String> list, List<String> list1) {
long st = System.nanoTime();
System.out.println("消耗时间为:" + (System.nanoTime() - st));
return !list.retainAll(list1);
}}
返回结果为:
消耗时间为:7711 false
但是这个retainAll这个方法有缺陷,如果集合A数组的大小没有改变,则返回false。如果集合A

本文介绍了在Java中判断两个集合元素是否完全相等的六种方法,包括循环遍历、使用`retainAll`方法、HashMap、MD5加密、Stream流以及直接转换为字符串比较。通过对比耗时,推荐使用`list.sort()`排序后通过`toString()`比较的方法。
最低0.47元/天 解锁文章
2184

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



