Java for循环删除集合中某些元素

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

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)

list.forEarch(item->{if(item.contains("aaa")){list.remove(item);}
})

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

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

Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){String str = iterator.next();if(str.contains("aaa")){iterator.remove();}
}

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

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

list.removeIf(item->item.contains("aaa));

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

String[] strs = {"a","ab","abc"};
List<String> list = new ArrayList<>(Arrays.asList(strs));

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

String[] strs = {"a","ab","abc"};List<String> list1 = Arrays.asList(strs).stream().collect(Collectors.toList());List<String> list2 = Arrays.strem(strs).collect(Collectors.toList());


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部