List list =new ArrayList();
list.add("asdfffff");
list.add("sx");
list.add("kkj");
list.add("r");
System.out.println("原list:" + list);
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String item = iter.next();
if (item.equals("sx")) {
iter.remove();
}
}
System.out.println("删除元素后list:" + list);
运行结果:
原list:[asdfffff, sx, kkj, r]
删除元素后list:[asdfffff, kkj, r]
迭代器remove()方法虽然方便,但仍有需要注意的地方,要用此法删除元素的前提是该 List 的实现类的iterator()方法返回的Iterator实现类支持remove()方法,否则会报 java.lang.UnsupportedOperationException异常,常用的ArrayList的Iterator支持remove()方法,但有些情况下就会有问题,来看看以下代码:
Integer[] arr = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
Iterator<Integer> iter = list.iterator();
while (iter.hasNext()) {
Integer item = iter.next();
if (item == 2) {
iter.remove();
}
}
System.out.println("删除元素后list:" + list);
这种情况就会运行失败,报 java.lang.UnsupportedOperationException异常。
使用迭代器remove()方法还有需要注意的问题,接着看下面的代码:
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Iterator<Integer> iter = list.iterator();
while (iter.hasNext()) {
iter.remove();
}
这个例子只是为了展示,比较极端,如果想用这种方法删除List所有元素,则会报java.lang.IllegalStateException异常,原因就是没有在删除前调用Iterator的next()方法。
还有一种变体,如下所示:
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String item = iter.next();
if (item.equals("a") || item.equals("c")) {
list.remove(item);
}
}
注意,上面的代码调用了List的remove()而不是Iterator的remove(),如果只删除一个元素,那么在删除后调用break语句即可,但这里目的是删除多于1个的元素,会报java.util.ConcurrentModificationException异常。
1、文章版权归作者所有,未经允许请勿转载。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505
你可能也喜欢
- ♥ WordPress父页面显示子页面列表的方法09/12
- ♥ PHP实现301永久重定向的方法04/25
- ♥ wordpress经典编辑器里的more标签显示查看全文的代码04/23
- ♥ 密码保护:1688店铺关键词排名因素10/17
- ♥ 网站程序从Zblog转WordPress的教程04/17
- ♥ 【核心】1688店铺运营数据监控表10/26