List求交集,差集,并集,去重并集
* 交集 listA.retainAll(listB) listA内容变为listA和listB都存在的对象
* 差集 listA.removeAll(listB) listA内容变为listA存在而listB不存在的对象
* 并集 listA.addAll(listB) listA内容变为listA和listB合并的对象
* 去重并集 listA.removeAll(listB),listA.addAll(listB) 为了去重,listA先取差集,然后追加全部的listB
本来正好用到list求差集,正好整理一下其他常用的方法。
package com.company.main;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
public class Test {
/**
* 交集 listA.retainAll(listB) listA内容变为listA和listB都存在的对象
* 差集 listA.removeAll(listB) listA内容变为listA存在而listB不存在的对象
* 并集 listA.addAll(listB) listA内容变为listA和listB合并的对象
* 去重并集 listA.removeAll(listB),listA.addAll(listB) 为了去重,listA先取差集,然后追加全部的listB
*/
public static void main(final String[] args) throws ExecutionException, InterruptedException {
// 差集
List<String> list3 = new ArrayList<String>();
List<String> list4 = new ArrayList<String>();
list3.add("one");
list3.add("two");
list4.add("two");
list4.add("three");
// list3.removeAll(list4);
// System.out.println(list3); // 结果:[one]
//第二种求差
// List distinctByUniqueList = list3.stream()
// .filter(item -> !list4.stream().collect(Collectors.toList()).contains(item)).collect(Collectors.toList());
// System.out.println(distinctByUniqueList); // 结果:[one]
//第三种求差(效率最快)空间换时间,利用hashmap的key唯一
HashMap<String, Boolean> map = new HashMap();
List distinctByUniqueList = new ArrayList<>();
for (int i = 0; i < list4.size(); i++) {
map.put(list4.get(i), true);
}
for (int i = 0; i < list3.size(); i++) {
String x = list3.get(i);
if (!map.containsKey(x)) {
distinctByUniqueList.add(x);
}
}
System.out.println(distinctByUniqueList); // 结果:[one]
// 并集
List<String> list5 = new ArrayList<String>();
List<String> list6 = new ArrayList<String>();
list5.add("1");
list5.add("2");
list6.add("3");
list6.add("2");
list5.addAll(list6);
System.out.println(list5); // 结果:[1, 2, 3, 2]
// 去重并集
List<String> list7 = new ArrayList<String>();
list7.add("1");
list7.add("2");
List<String> list8 = new ArrayList<String>();
list8.add("2");
list8.add("3");
list7.removeAll(list8);
list7.addAll(list8);
System.out.println(list7); // 结果:[1, 2, 3]
//去重元素
list7.add("2");
List unique = list7.stream().distinct().collect(Collectors.toList());
System.out.println(unique); // 结果:[1, 2, 3]
// 交集
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
list1.add("one");
list1.add("two");
list2.add("two");
list2.add("three");
list1.retainAll(list2);
System.out.println(list1); // 结果:[two]
}
/**
* 字符串拼接
* @throws Throwable
*/
protected void appendJson() throws Throwable {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(" {\"beg\":1");
String[] a = {"count", "get", "set"};
HashMap hashMap = new HashMap();
hashMap.put("set", 1);
hashMap.put("count", 2);
hashMap.put("one", 3);
ArrayList<String> arrayList = new ArrayList();
Collections.addAll(arrayList, a);
arrayList.forEach(x -> {
if (hashMap.get(x) != null) {
stringBuffer.append(",\"" + x + "\":").append("\"").append(hashMap.get(x)).append("\"");
}
});
stringBuffer.append("}");
System.out.println(stringBuffer);
}
}