前言:
现在我们对“arraylist删除指定元素”大致比较关心,兄弟们都想要了解一些“arraylist删除指定元素”的相关知识。那么小编同时在网上收集了一些对于“arraylist删除指定元素””的相关内容,希望我们能喜欢,各位老铁们一起来学习一下吧!平时最常用的莫过于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); }
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #arraylist删除指定元素