可以使用Java8的Stream API來比較兩個List的差異,并取出不同的對象。
方式一具體步驟如下:
將兩個List轉換為Stream類型;
調用Stream的filter方法,將不同的對象過濾出來;
將過濾出的不同的對象轉換為List類型。
Listlist1=Arrays.asList("A","B","C","D");
Listlist2=Arrays.asList("B","C","E","F","A","D");
Listdiff=list1.stream().filter(item->!list2.contains(item)).collect(Collectors.toList());
Listdiff1=list2.stream().filter(item->!list1.contains(item)).collect(Collectors.toList());
diff.addAll(diff1);
diff.forEach(x->System.out.println(x));
上述代碼中,將兩個List類型的對象list1和list2轉換為Stream類型,并調用filter方法篩選出不同的對象。最后通過collect方法將不同的對象轉換為List類型,并輸出結果。
方式二具體步驟如下:
Listlist1=Arrays.asList("apple","banana","orange","pear");
Listlist2=Arrays.asList("apple","banana","grape");
Listlist3=Stream.concat(
list1.stream().filter(str->!list2.contains(str)),
list2.stream().filter(str->!list1.contains(str)))
.collect(Collectors.toList());
System.out.println("Differentstrings:"+list3);
上述代碼,首先定義了兩個List類型的變量list1和list2,分別表示要比較的兩個列表。然后使用Stream的concat()方法將兩個Stream對象連接起來,得到一個由兩個列表的不同元素組成的Stream。
具體來說,第一個Stream對象是list1中與list2不同的元素,使用filter()方法過濾出來;第二個Stream對象是list2中與list1不同的元素,同樣也是使用filter()方法過濾出來。最后使用collect(Collectors.toList())將這些不同的元素收集到一個List中,返回的就是兩個列表不同的元素組成的集合list3。
最后在控制臺輸出集合list3,即可得到list1和list2中不同的字符串。
方式三具體步驟如下:
List