package top.dj;
import java.util.*;
/**
* @Author: DengJia
* @Date: 2021/9/24 15:07
* @Description: 获取两个列表中不同的数据
*/
public class Test {
public static void main(String[] args) {
String[] a = {null, "21", "0", "39.42", "1013.34", "39.42", "3", "4.61", "14", "56", "56", "3", "9.22", "337.78", "0", "4", "18", "38", "7", "7", "9", "8", "19", "50", "16", "2", "3.6", "1.36", "75", "4", "26", "9.22", "3", "39.42", "337.78", "26", "50", "7", "7", "56", "9", "4", "56", "19", "18", "38", "7", "56", "19", "18", "56", "38", "7", "9", "4", "56", "1", "9.6", "10", "236.52", "6.57", "80.99", "2.7", "0", "0", "0", "7", "5", "21", "2.7", "80.99", "7", "0", "0", "0", "5", "21", "35.26", "3", "337.78", "9.22", "2.7", "80.99", "50", "0", "0", "0", "7", "5", "21", "80.99", "2.7", "10", "2.7", "0", "0", "0", "7", "5", "21", "2.7", "80.99", "2.7", "10", "0", "0", "0", "7", "5", "21", "2.7", "10", "2.7", "80.99", "0", "0", "7", "0", "21", "5", "2.7", "80.99", "2.7", "10", "26", "7", "0", "0", "0", "40.49", "2.7", "40.49", "10", "2.7", "2.7", "21", "13", "4", "0", "0", "7", "0"};
String[] b = {null, "21", "0", "39.42", "1013.34", "39.42", "4.61", "3", "14", "56", "56", "9.22", "3", "337.78", "4", "0", "8", "19", "18", "7", "9", "38", "7", "50", "3.6", "1.36", "16", "2", "75", "4", "26", "3", "39.42", "9.22", "337.78", "7", "9", "56", "38", "7", "56", "4", "19", "18", "26", "50", "56", "7", "19", "18", "9", "56", "38", "7", "4", "56", "1", "9.6", "10", "236.52", "6.57", "2.7", "80.99", "0", "0", "7", "0", "21", "5", "80.99", "2.7", "0", "0", "0", "7", "5", "21", "35.26", "3", "9.22", "337.78", "80.99", "2.7", "50", "0", "0", "0", "7", "5", "21", "2.7", "2.7", "80.99", "10", "0", "0", "7", "0", "21", "5", "10", "2.7", "2.7", "80.99", "0", "0", "0", "7", "5", "21", "2.7", "2.7", "80.99", "10", "7", "0", "0", "0", "21", "5", "10", "2.7", "2.7", "80.99", "26", "0", "0", "0", "7", "2.7", "40.5", "2.7", "40.5", "10", "2.7", "21", "4", "13", "7", "0", "0", "0"};
List<String> la = Arrays.asList(a);
List<String> lb = Arrays.asList(b);
System.out.println("disjoint = " + Collections.disjoint(la, lb));
System.out.println("different = " + getDifferent(la, lb) + getDifferent(lb, la));
}
public static List<String> getDifferent(List<String> l1, List<String> l2) {
Map<String, Integer> map = new HashMap<>(l1.size(), l2.size());
List<String> diff = new ArrayList<>();
List<String> maxList = l1;
List<String> minList = l2;
if (l2.size() > l1.size()) {
maxList = l2;
minList = l1;
}
for (String string : maxList) {
map.put(string, 1);
}
for (String string : minList) {
Integer cc = map.get(string);
if (cc != null) {
map.put(string, ++cc);
continue;
}
map.put(string, 1);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1) {
diff.add(entry.getKey());
}
}
return diff;
}
}
参考:
https://www.javaroad.cn/articles/3074
https://www.cnblogs.com/userzf/p/13830962.html