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问题的更多相关文章

  1. List集合remove元素的问题

    import java.util.*; public class object { public static void main(String[] args) { String str1 = new ...

  2. 集合remove()方法相关问题

    学习集合的过程中,了解到一个有关于remove()方法的有关特性,特此记录 首先remove方法的格式: collection.remove(Object o); 这是指对集合collection内的 ...

  3. 关于JDK中的集合总结(二)

    1.2版本的JDK才出现的java集合框架. 下面介绍说一下Vector的一些特点. import java.util.Enumeration; import java.util.Iterator; ...

  4. Java学习日记-11 集合(1)

    Collection接口集合中存储的只是对象的引用,不是对象本身. 1.ArrayList<E>类1.1ArrayList和Collection的关系 public interface L ...

  5. python_9_集合

    什么是集合? --一种无序,没有重复元素的一种数据类型            -- 形式:   {元素1,元素2,......} 如何把一个列表变成一个集合? --set(列表)            ...

  6. python之路(2)集合(set)和字符串格式化

    目录 集合(set) 字符串的格式化(%和format) 集合(set) {‘a’,'b','c','d','e'} 定义:有不同元素组成的集合,集合的元素为不可变类型(数字,字符串,元组),集合是一 ...

  7. 【python 3】 集合方法操作汇总

    基本数据类型 : set 集合(set)特点 : 无序 不能重复(自动去重) 用 {} 或 set()函数 来表示集合 空集合 : set() 1 name = {"江户部柯南", ...

  8. python3集合练习(set)

    #集合是由不同元素组成;无序;集合中的元素必须是不可变类型;#s = {} 或者 s = set() 创建集合#update()扩展集合.返回值为Noneg1 = {'wcj','good','luc ...

  9. 12:集合map、工具类

    一.map集合 Map:一次添加一对元素.Collection 一次添加一个元素. Map也称为双列集合,Collection集合称为单列集合. 其实map集合中存储的就是键值对(结婚证书), map ...

随机推荐

  1. document.execCommand("BackgroundImageCache",false,true)解决ie6下的背景图片缓存问题

    E6下的背景图片每次使用都会重新发送请求(not 本地),连一个hover效果时候同样的背景图片仅仅位置不同而已,ie6都会再次发送请求,这个令人崩溃的事情需要解决掉:对于ie来说,filter:ex ...

  2. IE浏览器报Promise未定义的错误、解决vuex requires a Promise polyfill in this browser问题

    一个vue-cli构建的vue项目,一个使用angular的项目,两个项目在其他浏览器一切正常,但是ie中会报Promise未定义的错误 解决办法: 一.vue的项目: 1.npm install b ...

  3. ElementUI的提示框的使用记录

    1.popover点击之后隐藏 问题描述:做了一个通知面板功能,下面提示信息有路由,每次点击消息呢,就跳转到了路由页面,但是此时这个面板没关闭,希望将其关闭 解决:官方文档有个属性 <div&g ...

  4. android 随手记 摄像头录像

    1 xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ...

  5. System.ComponentModel.Component : MarshalByRefObject, IComponent, IDisposable

    #region 程序集 System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // C:\Windows\ ...

  6. 读取Style符号库样式的方法

    以前进行符化的时候一般都是自定义Symbol,或者使用SymbologyControl进行选择,由于实际需要,我们来读取一下样式管理器中的样式.在ArcMap中打开如下:style下有很多样式类,每个 ...

  7. 1423 Greatest Common Increasing Subsequence (LCIS)

    讲解摘自百度; 最长公共上升子序列(LCIS)的O(n^2)算法? 预备知识:动态规划的基本思想,LCS,LIS.? 问题:字符串a,字符串b,求a和b的LCIS(最长公共上升子序列).? 首先我们可 ...

  8. Java从零开始学十(Arrays类对数组的常用方法)

    一.Arrays类常用方法 二.简单例子 package com.pb.demo1; import java.util.Arrays; /* * Arrays工具类的中的几个常用方法 * 1.copy ...

  9. vb中adOpenKeyset, adLockOptimistic

    adOpenStatic 向前游标adOpenKeyset 键集游标adLockOptimistic设置窗口为固定的大小 附带一个小资料: ------------------------------ ...

  10. SHELL有用的命令

    [root@gechong /]# find / -name "gechong*" -print [root@gechong /]# find / -name "[A-Z ...