# 求List1中有的但是List2中没有的元素
public static List<String> subList1(List<String> list1, List<String> list2) {
//空间换时间 降低时间复杂度
Map<String, String> tempMap = new HashMap<>();
for(String str:list2){
tempMap.put(str,str);
}
//LinkedList 频繁添加删除 也可以ArrayList容量初始化为List1.size(),防止数据量过大时频繁扩容以及数组复制
List<String> resList = new LinkedList<>();
for(String str:list1){
if(!tempMap.containsKey(str)){
resList.add(str);
}
}
return resList;
}
如果List中保存的是对象类型,实现原理也是一样的。使用Map将比较的元素作为Key值,对象存为Value,对Key值进行比较,并执行对应的存储操作。
顺便记录一下List的实例化语句
List<String> arrayList1 = Arrays.asList("xxx","yyy","zzz");
List<String> arrayList2 = new ArrayList<>(Arrays.asList("xxx1","yyy","zzz"));