我是靠谱客的博主 唠叨胡萝卜,这篇文章主要介绍Java for循环删除集合中某些元素,现在分享给大家,希望可以做个参考。

Java for循环有四种方法删除集中某些元素:
1、简单for循环删除(这种方法不报错,但是结果不正确

复制代码
1
2
3
4
5
6
for(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
6
list.forEarch(item->{ if(item.contains("aaa")){ list.remove(item); } })

foreach不支持对集合中的元素进行增删操作,但是支持修改

3、通过迭代器(Iterator)删除(推荐使用该方法

复制代码
1
2
3
4
5
6
7
8
Iterator<String> iterator = list.iterator(); while(iterator.hasNext()){ String str = iterator.next(); if(str.contains("aaa")){ iterator.remove(); } }

注意:使用iterator迭代器的时候不可以对集合做维护和新增操作,如果要添加和更改元素,建议使用ListIterator

4、Java 8提供的一个方法removeIf()(推荐使用该方法)

复制代码
1
2
list.removeIf(item->item.contains("aaa));

最后:Arrays.asList()方法生成的列表是无法直接删除里面的元素的,需要在外面套一层
new Arraylist()

复制代码
1
2
3
String[] strs = {"a","ab","abc"}; List<String> list = new ArrayList<>(Arrays.asList(strs));

或者先转换成流再收集成list

复制代码
1
2
3
4
String[] 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部