假设要从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);
}