天天看點

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);
}
           

繼續閱讀