删除集合中特定元素的几种情况
从集合中删除元素一直是一个比较容易遗漏的知识点,今天来给大家介绍一下删除集合中特定元素的一些情况。
(一)List如何实现遍历删除
以ArrayList为例
List<String> a1 = new ArrayList<String>();a1.add("Tom");a1.add("Tom");a1.add("Jerry");a1.add("John");a1.add("Andy");Iterator<String> it = a1.iterator();while(it.hasNext()) {String next = it.next();if(next.equals("Tom")) {it.remove();}}for (int i = 0; i < a1.size(); i++) {System.out.println(a1.get(i));}
运行结果大家可以自己试一下,可以发现两个Tom都被删除了,这种就是利用迭代器来删除List中的元素,是非常正确的做法。LinkedList也是一样。那么除了迭代器还有没有其他做法呢?答案是有的,请看
List<String> a1 = new ArrayList<String>();a1.add("Tom");a1.add("Tom");a1.add("Jerry");a1.add("John");a1.add("Andy");for (int i = 0; i < a1.size(); ) {if(a1.get(i).equals("Tom")) {a1.remove(i);}else {i++;}}
看到这里有的小伙伴也许会问,为什么要在else的时候再i++呢?这是因为因为集合的长度发生了变化,导致原来的索引指向的元素后移了一位,所以要在不满足删除条件时再i++,不然会导致漏元素,很有可能出现漏删的情况,小伙伴们可以试一下正常把i++放在for的括号里。
(二)Set如何实现遍历删除
Set以HashSet为例,注意:Set一般只能用迭代器来遍历
HashSet<String> a1 = new HashSet<String>();a1.add("Tom");a1.add("Tom");a1.add("Jerry");a1.add("John");a1.add("Andy");Iterator<String> it = a1.iterator(); while (it.hasNext()) { String str = it.next(); if(str.equals("Tom")) {it.remove();}}
这就是Set的遍历删除方式
(三)Map如何实现遍历删除
Map以HashMap为例来说明其遍历删除。
HashMap<String, String> h1 = new HashMap<String,String>();h1.put("Tom", "one");h1.put("Jerry", "two");h1.put("John", "three");h1.put("Andy", "four");Iterator<Entry<String, String>> it = h1.entrySet().iterator();while(it.hasNext()) {Entry<String, String> next = it.next();//此处为删除特定的keyif(next.getKey().equals("Tom")) {it.remove();}//此处为删除特定的valueif(next.getValue().equals("two")) {it.remove();}}//遍历HashMapfor (Entry<String, String> string : h1.entrySet()) {System.out.println(string.getKey());}
小伙伴们自己运行下,就可以发现特定的key和value都删除成功了。
好了,所有的内容就到这里了,希望能对大家有所帮助。
删除集合中特定元素的几种情况相关推荐
- 循环的时候去删除集合中的元素 java.util.ConcurrentModificationException
使用for循环,删除集合中的元素,会报错 java.util.ConcurrentModificationException 只能通过迭代器 iterator删除 1:在while循环中使用itera ...
- PageCollectionView[Bug],使用Filter的时候,删除集合中的元素,会导致ArgumentOutOfRangeException...
PageCollectionView,没有使用Filter的时候一切正常:当使用Filter的时候,删除集合中的元素,会抛出如下异常: 1: 指定的参数已超出有效值的范围.\n参数名: index 2 ...
- java删除集合元素吗_java如何删除集合中的元素
java如何删除集合中的元素 如何使用java删除集合中的'元素呢?下面是小编给大家提供的删除集合中元素的常见方法,欢迎阅读,更多详情请关注应届毕业生考试网. Java代码如下: package co ...
- vue中如何在方法中动态的删除集合中的元素!?
参考https://blog.csdn.net/weixin_42230550/article/details/87990486 vue中,如何在方法中动态的删除集合中的元素? me.btn_elem ...
- (js)删除数组中某个元素的几种方式
(js)删除数组中某个元素的几种方式 filter 删除删除数组中某个指定元素 //过滤出item.srcConcept != this.vertex的对象 this.edit.conceptData ...
- 删除list集合中特定元素的正确姿势
背景 如何删除一个集合对象中的特定元素?小问题,但并不简单. 常见异常: ConcurrentModificationException java.util.ConcurrentModificatio ...
- java删除数组中重复元素的几种方法
Java操控数组,删除数组中所有的重复元素,使其数组元素全部唯一,有以下几种方法: 1,使用set(最好想到),set本身就是不重复的集合: package Array_test;import jav ...
- JS 删除数组中某个元素的几种方式
目录 第一种:删除最后一个元素 pop 删除 slice 删除 splice 删除 for 删除 length 删除 第二种: 删除第一个元素 shift 删除 slice 删除 splice 删除 ...
- JavaScript删除数组中某个元素的几种方式
文章目录 第一种:删除最后一个元素 pop 删除 slice 删除 splice 删除 for 删除 length 删除 第二种: 删除第一个元素 shift 删除 slice 删除 splice 删 ...
最新文章
- 外包工作经历暨2021年终总结
- const与define之间的区别?
- Linux设备驱动01:Linux设备驱动概述
- 程序员:你为什么要离职?
- halcon常用代码(持续更新)
- PHP调微信小程序接口:生成小程序码,常见问题
- 【数据预测】基于matlab双向长短时记忆BiLSTM(多输入单输出)数据预测【含Matlab源码 1826期】
- CSS 教程(全)+代码
- Arm 架构的过程调用标准
- 前端method常见请求方式
- tinker热修复gradle接入
- iMeta | 德加合作揭示葛藤菌根真菌的遗传多样性和群落组成
- emc服务器装什么系统,EMC DD系统安装指南.pdf
- 种植人参,土壤不好,怎么办?
- 亚马逊全球开店戴竫斐:2021中国出口跨境电商的蜕变与破局
- window11 git Bash右击不见得问题
- matlab 输入普朗克常量,半导体激光器线宽展宽因子的理论与实验分析.pdf
- mysql自动排序_MySQL中的排序
- android手机系统检测工具下载,手机设备信息检测软件下载-设备信息检测appv1.0 官方版-腾牛安卓网...
- ubuntu18.04+pcl1.8:运行visualization可视化程序,vtk6.3报错,vtk版本过低需重新安装对应版本vtk7.1.1