Java for循环有四种方法删除集中某些元素:
1、简单for循环删除(这种方法不报错,但是结果不正确)
复制代码
1
2
3
4
5
6for(int i=0;i<list.size();i++){ if(list.get(i).contains("aaa")){ list.remove(i); } }
结果不正确原因是:list中被删除一个元素以后,list中元素的索引会改变
2、增强for循环 forEarch()(这种方法会报错 Concurrent Modification Exception)
复制代码
1
2
3
4
5
6list.forEarch(item->{ if(item.contains("aaa")){ list.remove(item); } })
foreach不支持对集合中的元素进行增删操作,但是支持修改。
3、通过迭代器(Iterator)删除(推荐使用该方法)
复制代码
1
2
3
4
5
6
7
8Iterator<String> iterator = list.iterator(); while(iterator.hasNext()){ String str = iterator.next(); if(str.contains("aaa")){ iterator.remove(); } }
注意:使用iterator迭代器的时候不可以对集合做维护和新增操作,如果要添加和更改元素,建议使用ListIterator
4、Java 8提供的一个方法removeIf()(推荐使用该方法)
复制代码
1
2list.removeIf(item->item.contains("aaa));
最后:Arrays.asList()方法生成的列表是无法直接删除里面的元素的,需要在外面套一层
new Arraylist()
复制代码
1
2
3String[] strs = {"a","ab","abc"}; List<String> list = new ArrayList<>(Arrays.asList(strs));
或者先转换成流再收集成list
复制代码
1
2
3
4String[] strs = {"a","ab","abc"}; List<String> list1 = Arrays.asList(strs).stream().collect(Collectors.toList()); List<String> list2 = Arrays.strem(strs).collect(Collectors.toList());
最后
以上就是唠叨胡萝卜最近收集整理的关于Java for循环删除集合中某些元素的全部内容,更多相关Java内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复