java集合循环删除

简介: java集合循环删除,java list集合操作,java循环。分享牛,分享牛原创。java集合删除方法。

java集合循环删除,java list集合操作,java循环。分享牛,分享牛原创。java集合删除方法。
2.6.1.第一种方式

    list.add("1");  
            list.add("2");  
            list.add("3");  
            list.add("4");  
            list.add("5");  
            for (int i = 0; i < list.size(); i++) {  
                    list.remove(i);  
                    System.out.println("remove "+list);
            }  
            System.out.println("test1 : " + list); 

2.6.2.输出结果
remove [2, 3, 4, 5]
remove [2, 4, 5]
remove [2, 4]
test1 : [2, 4]
分享牛,分享牛原创
上面的图也可以看出,因为我们是根据i的长度跟list.size()判断的,因为list.size()一直变小,所以i>list.size()的时候for中的代码块是不会执行的,因为不满足条件,所以最终数组最终不会被删除完。 如果remove中的索引大于数组的长度的时候会报错。看一下源代码一目了然吧
public E remove(int index) {
rangeCheck(index);
}
private void rangeCheck(int index) {
if (index >= size)
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
2.6.3.第二种方式

    ArrayList<String> list = new ArrayList<String>();  
        list.add("1");  
        list.add("2");  
        list.add("3");  
        list.add("4");  
        list.add("5");  
        for (String l : list) {  
              list.remove(l);  

        }  
        System.out.println("test2 : " + list); 

2.6.4.输出结果
Exception in thread “main” java.util.ConcurrentModificationException
at java.util.ArrayList Itr.checkForComodification(UnknownSource)atjava.util.ArrayList Itr.next(Unknown Source)
at com.shareniu.TestList.main(TestList.java:14)
2.6.5.第三种方式

ArrayList<String> list = new ArrayList<String>();  
        list.add("1");  
        list.add("2");  
        list.add("3");  
        list.add("4");  
        list.add("5");  
        Iterator<String> iter = list.iterator(); 
        while (iter.hasNext()) {  
            String s = iter.next();  
                iter.remove();  

        }  
        System.out.println("test3 : " + list);

2.6.6.输出结果
test3 : []
2.6.7.比较第二种跟第三种的差距
第二种采用的 list.remove(l);
第三种采用的 iter.remove();
两个方法不一样导致list.remove(l); 有参数的报错为什么?
这个暂时没发现原因,发现原因的话,最终补上去。
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)

相关文章
|
15天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
36 5
|
1月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中stream API与传统for循环在性能上的对比,通过多个示例分析了不同场景下两者的优劣。作者指出,尽管stream API使代码更简洁,但不当使用会降低可读性和性能,特别是在处理大数据量时。实验结果显示,在多数情况下,普通for循环的性能优于stream API,尤其是在单次操作耗时较短但需多次执行的场景中。文章建议开发者在设计初期就考虑全局流程,避免重复使用stream流,以提升代码质量和性能。
Java循环操作哪个快?
|
1月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中Stream API与传统for循环的性能对比及适用场景。作者通过实际案例分析,指出在某些情况下,过度使用Stream API会导致代码可读性和维护性下降。测试结果显示,在数据量较小的情况下,普通for循环的性能优于Stream API,尤其是在涉及多次类似操作时。因此,建议在开发中根据具体需求选择合适的遍历方式,以提高代码的可读性和性能。
Java循环操作哪个快?
|
28天前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
39 4
|
1月前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
35 2
|
1月前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
1月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
1月前
|
Java 开发者
|
1月前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
34 0