天天看点

List中删除元素的几种方式

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

继续阅读