Java 循环删除list中指定元素

Java循环删除List元素技巧
本文探讨了在Java中使用三种不同方法从List中删除指定元素的实践:for循环、增强for循环及Iterator迭代器。分析了每种方法的优缺点,强调Iterator是循环删除指定元素的最佳选择。

1.for循环遍历删除指定元素

		List<String> list = new ArrayList<>(Arrays.asList("a","b","c","f","b","e","d"));
        for (int i = 0; i < list.size(); i++) {
            System.out.println("i="+i+"//str="+list.get(i));
            if (list.get(i).equals("b")) {
                list.remove(i);
            }
        }

程序运行结果如图:
如图
由结果分析可知,利用for遍历删除,删除某个元素之后,list的大小发生变化,索引也发生变化,当删除索引为1的b之后,继续根据索引访问索引为2的元素,由于删除的缘故后面元素自动往前移动一位,故此时索引2上的元素已经不再是c,而变成了f,也就是如图所打印出来的结果,故for循环适合删除特定一位元素,不适合循环删除特定元素;

2.增强for循环删除指定元素

        List<String> list = new ArrayList<>(Arrays.asList("a","b","c","f","b","e","d"));
        for (String s : list) {
            System.out.println("------"+s+"------");
            if ("b".equals(s)) {
                list.remove(s);
            }
        }

程序运行结果如图:
如图

3.iterator删除指定元素

        List<String> list = new ArrayList<>(Arrays.asList("a","b","c","f","b","e","d"));
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println("------"+next+"------");
            if ("b".equals(next)) {
                iterator.remove();
            }
        }
        System.out.println(list.toString());

结果如图:
如图
可以正常删除

### JavaList 集合删除指定元素Java 中,`List` 接口中定义了 `remove(Object o)` 方法用于移除列表中首次出现的指定元素(如果存在)。当列表包含多个相同元素时,只有第一个匹配项会被移除。 #### 单个元素移除示例 下面是一个简单的例子来展示如何从 `ArrayList` 移除特定字符串 "从我做起"[^1]: ```java import java.util.ArrayList; import java.util.List; public class RemoveExample { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("大家好"); list.add("从我做起"); list.add("共同进步"); System.out.println("移除前:" + list); boolean isRemoved = list.remove("从我做起"); if (isRemoved){ System.out.println("成功移除了'从我做起'"); }else{ System.out.println("'从我做起'不存在于列表中"); } System.out.println("移除后:" + list); } } ``` 对于含有重复元素的情况,比如有四个 `"C"` 的情形下,调用一次 `remove("C")` 只会移除第一次出现的那个 `"C"`[^2]: ```java import java.util.ArrayList; import java.util.List; public class MultiElementRemoval { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("C"); list.add("A"); list.add("C"); list.add("B"); list.add("F"); list.add("C"); list.add("C"); System.out.println("未移除前:" + list); while(list.contains("C")){ list.remove("C"); } System.out.println("全部'C'被移除后的结果:" + list); } } ``` 此程序通过循环检测是否存在 `"C"` 并不断将其移除直到不再有任何 `"C"` 存在于列表之中。这可以确保所有的目标元素都被清除掉而不仅仅是首个实例。 #### 注意事项 - 如果尝试移除非存在的元素,则不会发生任何变化,并返回 false 表明操作失败。 - 对于基本类型的封装类(如 Integer),应特别注意自动拆箱可能引发 NullPointerException 或者 ClassCastException 错误,在处理这类情况时要格外小心[^4]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn565973850

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值