Java中List根据条件删除元素的几种方式
更新时间:2024年04月22日 09:53:46 作者:渐暖°
java List删除指定元素有四种方法,分别是普通for循环,增强for循环,CopyOnWriteArrayList以及原生的Iterator迭代器循环来删除list中指定的某个元素,非常的简单,并通过代码示例讲解的非常详细,需要的朋友可以参考下
删除元素
第一种:迭代器
Iterator<Project> it = projectList.iterator(); while(it.hasNext()){ Project p=it.next(); if (!allProjectMap.containsKey(p.getId())){ it.remove(); }; }
第二种:remove
使用remove,但是要小心list的size,因为list删除一个元素后面的元素就会前移,所以要倒着删除
public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("aa"); list.add("bb"); list.add("cc"); for (int i = list.size() - 1; i >= 0; i--) { String str = list.get(i); if ("aa".equals(str)) { list.remove(str); } } System.out.println(list.size()); } }
第三种:使用CopyOnWriteArrayList
public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("aa"); list.add("bb"); list.add("cc"); CopyOnWriteArrayList<String> cowList = new CopyOnWriteArrayList<String>(list); for (String str : cowList) { if ("aa".equals(str)) { cowList.remove(str); } } System.out.println(cowList.size()); } }
第四种:双重for循环删除
for (int i = projectList.size() - 1; i >= 0; i--) { for (int j = projectList.size() - 1; j >= 0; j--) { if (projectList.get(i).getId().equals(projectList.get(j).getId())) { if (projectList.get(i).getHigh() != null && projectList.get(j).getHigh() != null) { if (projectList.get(i).getHigh() > projectList.get(j).getHigh()) { projectList.remove(j); i-=1; } } } } }
list如何删除空元素
list.removeAll(Collections.singleton(null)); list.removeIf(Objects::isNull); List<String> newList = list.stream().filter(Objects::nonNull).collect(Collectors.toList());
拓展:Java中list如何利用遍历进行删除操作
1、for循环:
常见初五写法:(由于下标问题达不到想要效果)
for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i); }
应该改为:(倒序操作避免下标问题)
int size = list.size(); for(int i=size-1;i>=0;i--){ if(list.get(i).equals("del")) list.remove(i); }
2、增强for循环(foreach循环):
常见错误:(会抛出ConcurrentModificationException)
for(String x:list){ if(x.equals("del")) list.remove(x); }
应改为:
//cowlist为原list CopyOnWriteArrayList<Record> list = new CopyOnWriteArrayList<Record>(cowList); for(String x:list){ if(x.equals("del")) list.remove(x); }
3、iterator遍历:(注意要是用迭代器的remove方法,不能使用list的remove方法)
Iterator<String> it = list.iterator(); while(it.hasNext()){ String x = it.next(); if(x.equals("del")){ it.remove(); } }
最好使用Iterator遍历。
到此这篇关于Java中List根据条件删除元素的几种方式的文章就介绍到这了,更多相关Java List条件删除元素内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java9 Stream Collectors新增功能(小结)
这篇文章主要介绍了Java9 Stream Collectors新增功能(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12
最新评论