龙空技术网

Java中ArrayList删除元素

大飞 323

前言:

现在我们对“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删除指定元素