List动态删除元素

110 阅读1分钟

方式一

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("laowang");
    list.add("xiaozhang");
    list.add("laozhou");
    list.add("laozhu");

    //方式一
    for(int i=0;i<list.size();i++){
        if (list.get(i).startsWith("lao")){ //判断前缀是否包含”lao"
            list.remove(i);//根据下标删除元素
        }
    }
    System.out.println(list);//打印list集合为 [xiaozhang, laozhu]
    /**
     * 总结:
     * 因为每次删除一个元素 list.size()方法中的元素个数会减少
     */

}

方式二

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("laowang");
    list.add("xiaozhang");
    list.add("laozhou");
    list.add("laozhu");

    //方式二 倒序查找
    for(int i=list.size()-1;i>=0;i--){
        if (list.get(i).startsWith("lao")){ //判断前缀是否包含”lao"
            list.remove(i);//根据下标删除元素
        }
    }
    System.out.println(list);//打印list集合为 [xiaozhang]
    /**
     * 总结:
     * 倒序可以完成动态删除
     */

}

方式三

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("laowang");
    list.add("xiaozhang");
    list.add("laozhou");
    list.add("laozhu");

    //方式三 迭代器遍历
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()){ //
        if(iterator.next().startsWith("lao")){
            iterator.remove(); //删除
        }
    }
    System.out.println(list);//打印list集合为 [xiaozhang]
    /**
     * 总结:
     * 迭代器遍历,动态删除
     */

}

方式四

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("laowang");
    list.add("xiaozhang");
    list.add("laozhou");
    list.add("laozhu");

    //方式三 removeIf删除
    list.removeIf(s->s.startsWith("lao"));
    System.out.println(list);//打印list集合为 [xiaozhang]

}

方式五

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("laowang");
    list.add("xiaozhang");
    list.add("laozhou");
    list.add("laozhu");

    //方式三 removeIf删除
    list=list.stream().filter(s -> !s.startsWith("lao")).collect(Collectors.toList());
    System.out.println(list);//打印list集合为 [xiaozhang]

}