300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java中删除集合中的指定元素

Java中删除集合中的指定元素

时间:2021-11-20 10:45:26

相关推荐

Java中删除集合中的指定元素

引出问题

当我们从集合中找出某个元素并删除的时候可能出现一种并发修改异常问题。

哪些遍历存在问题?

a.迭代器遍历集合且直接用集合删除元素的时候可能出现。

b.增强for循环遍历集合且直接用集合删除元素的时候可能出现。

哪种遍历且删除元素不出问题

迭代器遍历集合但是用迭代器自己的删除方法操作可以解决。

使用for循环遍历并删除元素不会存在这个问题。

示例代码:

package collection.app.d5_collection_list;import java.util.ArrayList;import java.util.Iterator;import java.util.List;/**删除集合中的元素:当我们从集合中找出某个元素删除时,可能会出现一种并发修改异常问题*/public class ListDemo4 {public static void main(String[] args) {List<String> list=new ArrayList<>();list.add("张三");list.add("Java");list.add("Java");list.add("通通");list.add("通通");System.out.println(list);//删除集合中Java元素//1.迭代器遍历删除指定元素// Iterator<String> it = list.iterator();// while (it.hasNext()){// String ele= it.next();// if (ele.equals("Java")){//it.remove();//使用迭代器删除当前位置,保证不后移,能够成功遍历// }// }// System.out.println(list);//2.foreach遍历删除(不可以删除,会出现异常)// for (String s:list) {// if ("Java".equals(s)){//list.remove("Java");// }// }// System.out.println(list);//3.Lambda表达式(会出现异常)// list.forEach(s->{// if ("Java".equals(s)){//list.remove("Java");// }// });//4.for循环遍历//a.方案1// for (int i = 0; i < list.size(); i++) {// if ("Java".equals(list.get(i))){//list.remove("Java");//i--;// }// }// System.out.println(list);//b.方案(倒着遍历删除)for (int i=list.size()-1;i>=0;i--){if ("Java".equals(list.get(i))){list.remove("Java");}}System.out.println(list);}}

运行截图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。