假設要從a-z的清單中删除c、j、x、y四個元素(文中加粗字型是删除邏輯的代碼)
public void removeTest(){
//1、首先構造a-z的清單
List<String> allList = new ArrayList<>();
for (char item:"abcdefghijklmnopqrstuvwxyz".toCharArray()) {
allList.add(String.valueOf(item));
}
//2、要删除的字元c、j、x、y
List<String> removeList = new ArrayList<>();
for (char item:"cjxy".toCharArray()) {
removeList.add(String.valueOf(item));
}
//3、執行删除邏輯
//3.1 第一種方式,構造新的list
List<String> newList = new ArrayList<>();
allList.forEach(item->{if(!removeList.contains(item)){newList.add(item);}});
System.out.println(" allList:"+allList);
System.out.println("第一種方式結果驗證:"+newList);
//3.2 第二種方式,使用iterator
Iterator<String> iterator = allList.iterator();
while (iterator.hasNext()){
if (removeList.contains(iterator.next()))
//這裡注意一下,一定要執行iterator.remove(),不要使用allList.remove()
iterator.remove();
}
System.out.println("第二種方式結果驗證:"+allList);
//3.3 第三種方式,這種方式要求jdk版本在1.8及以上
//<1>由于上面allList已經改變了,重新構造一個a-z的清單
List<String> allList1 = new ArrayList<>();
for (char item:"abcdefghijklmnopqrstuvwxyz".toCharArray()) {
allList1.add(String.valueOf(item));
}
System.out.println(" allList1:"+allList1);
//<2>執行删除
allList1.removeIf(removeList::contains);
System.out.println("第三種方式結果驗證:"+allList1);
}