首页 > 代码库 > List 集合remove问题
List 集合remove问题
java的list集合中。使用remove删除元素:
方法一:
static List<Integer> list3 = new ArrayList<Integer>(); static { list3.add(1); list3.add(2); list3.add(2); list3.add(2); list3.add(2); } private static void remove(List<Integer> list3) { for (int i=0;i<list3.size();i++) { if(list3.get(i) == 2) { list3.remove(i); } } print(list3); }
打印结果:1。2。2
造成问题的解决办法是,在使用remove删除list中元素时,list集合的size会发生变化。所以不能达到预期。
方法二:
private static void remove(List<Integer> list3) { for(int i = 0 , len= list3.size();i<len;++i){ if(list3.get(i)==2){ list3.remove(i); --len;//降低一个 --i;//多谢deny_guoshou指正,假设不加会出现评论1楼所说的情况。 } } print(list3); }
打印结果:1
因为动态的计算list大小,所以能够得到正确答案
方法三:
Iterator<String> sListIterator = list.iterator(); while(sListIterator.hasNext()){ String e = sListIterator.next(); if(e.equals("3")){ sListIterator.remove(); } }List接口内部实现了Iterator接口。提供开发人员一个iterator()得到当前list对象的一个iterator对象。
注:对于并发情况,更因该使用第三种方法(迭代器)。否则一定会出现并发问题。
List 集合remove问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。