package com.yuan.checkdiffList;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class CheckDiffList {
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));
}
String[] arr = {"1", "2", "2"};
String[] arr1 = {"1", "1", "2"};
list = Arrays.asList(arr);
list1 = Arrays.asList(arr1);
// System.out.println(checkDifferent(list, list1));
// System.out.println(checkDifferent2(list, list1));
// System.out.println(checkDifferent3(list, list1));
// System.out.println(checkDifferent4(list, list1));
System.out.println(checkDifferent5(list, list1));
}
/**
* 方法一:使用contains()进行比较
* 注意:当集合里有重复元素时,此方法不可行
*
* @param list
* @param list1
* @return
*/
private static boolean checkDifferent(List<String> list, List<String> list1) {
long startTime = System.nanoTime();
if (list == null && list1 == null) {
return true;
} else if (list == null || list1 == null) {
return false;
}
if (list.size() != list1.size()) {
System.out.println("spare time:" + (System.nanoTime() - startTime));
return false;
}
// for (String str : list) {
// if (!list1.contains(str)) {
// System.out.println("spare time:"+(System.nanoTime()-startTime));
// return false;
// }
// }
if (list.containsAll(list1) && list1.containsAll(list)) {
System.out.println("spare time:" + (System.nanoTime() - startTime));
return true;
}
System.out.println("spare time:" + (System.nanoTime() - startTime));
return false;
}
/**
* 方法二:使用apache common工具类
*
* @param list
* @param list1
* @return
*/
private static boolean checkDifferent2(List<String> list, List<String> list1) {
long startTime = System.nanoTime();
boolean isEqual;
if (list == null && list1 == null) {
isEqual = true;
} else if (list == null || list1 == null) {
isEqual = false;
} else {
isEqual = CollectionUtils.isEqualCollection(list, list1);
}
System.out.println("spare time:" + (System.nanoTime() - startTime));
return isEqual;
}
/**
* 方法三:如果业务要求两个list的顺序一致,内容一致,直接使用equals()方法
*
* @param list
* @param list1
* @return
*/
private static boolean checkDifferent3(List<String> list, List<String> list1) {
boolean isEqual;
if (list == null && list1 == null) {
isEqual = true;
} else if (list == null || list1 == null) {
isEqual = false;
} else {
isEqual = list.equals(list1);
}
return isEqual;
}
/**
* 方法四:将集合排序后进行比较
*
* @param list
* @param list1
*/
private static boolean checkDifferent4(List<String> list, List<String> list1) {
long startTime = System.nanoTime();
if (list == null && list1 == null) {
return true;
} else if (list == null || list1 == null) {
return false;
}
if (list.size() != list1.size()) {
System.out.println("spare time:" + (System.nanoTime() - startTime));
return false;
}
Collections.sort(list);
Collections.sort(list1);
boolean isEqual=list1.equals(list);
System.out.println("spare time:" + (System.nanoTime() - startTime));
return isEqual;
}
/**
* 方法四:将集合排序,然后转为String后进行比较,效率更高
*
* @param list
* @param list1
*/
private static boolean checkDifferent5(List<String> list, List<String> list1) {
long startTime = System.nanoTime();
if (list == null && list1 == null) {
return true;
} else if (list == null || list1 == null) {
return false;
}
if (list.size() != list1.size()) {
return false;
}
// list.sort(Comparator.comparing(String::hashCode));
// list1.sort(Comparator.comparing(String::hashCode));
Collections.sort(list);
Collections.sort(list1);
boolean isEqual=list1.toString().equals(list.toString());
System.out.println("spare time:" + (System.nanoTime() - startTime));
return isEqual;
}
}
比较两个集合是否相等
最新推荐文章于 2023-03-21 14:36:44 发布