前言:
此时姐妹们对“java循环删除元素”都比较注意,看官们都需要分析一些“java循环删除元素”的相关知识。那么小编同时在网络上收集了一些有关“java循环删除元素””的相关文章,希望朋友们能喜欢,小伙伴们一起来学习一下吧!平时最常用的莫过于ArrayList和HashMap了,面试的时候也是问答的常客。先不去管容量、负载因子什么的,就是简单的使用也会遇到坑。尤其是使用Remove.
经常遇到的一个场景是:遍历list, 然后找到合适条件的给删除掉,比如删除所有的偶数。
@Test public void testRemove2(){ List<Integer> integers = new ArrayList<>(5); integers.add(1); integers.add(2); integers.add(2); integers.add(4); integers.add(5); for (int i = 0; i < integers.size(); i++) { if (integers.get(i)%2==0){ integers.remove(i); } } System.out.println(integers); }
看起来好像没问题,加入面试的时候当面问:输出结果是什么?再问真不会报错吗?再问结果是什么?
结果是:
报错结果是空list结果是[1, 2, 5]
如果使用foreach是否可以实现刚开始的问题:
@Test public void testRemove4(){ List<Integer> integers = new ArrayList<>(5); integers.add(1); integers.add(2); integers.add(2); integers.add(4); integers.add(5); for (Integer string : integers) { integers.remove(string); } }
结果报错: java.lang.UnsupportedOperationException
正确的remove做法是:
方法一:
@Test public void testRemove9(){ List<Integer> integers = new ArrayList<>(5); integers.add(1); integers.add(2); integers.add(2); integers.add(4); integers.add(5); Iterator<Integer> iterator = integers.iterator(); while (iterator.hasNext()){ Integer next = iterator.next(); if (next%2 == 0){ iterator.remove(); } } System.out.println(integers); }
方法二:
@Test public void testRemove7(){ List<Integer> integers = new ArrayList<>(5); integers.add(1); integers.add(2); integers.add(2); integers.add(4); integers.add(5); for(int i= integers.size()-1;i>=0;i--) { if (integers.get(i)%2==0){ integers.remove(i); } } System.out.println(integers); }
标签: #java循环删除元素