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. C#匿名方法与Delegate类型转换错误

    问题描述 C#2.0出现了匿名方法, 这在一定程度上节省了我们维护代码上下文的精力, 也不需要思考为某个方法取什么名字比较合适. 在FCL的一些方法中要求传入一个Delegate类型的参数, 比如Co ...

  2. [Node.js]30. Level 6: Listen 'Question' from client, and then Answer the Question

    Clients can also answer each other questions, so let's build that feature by first listening for the ...

  3. 【statistics】查看2018.4.25日理想论坛某ID在一天中的活跃情况

    用于统计的sum.py代码: import re import pymysql # 入口函数 def main(): dic={'00':0,'01':0,'02':0,'03':0,'04':0,' ...

  4. 【js】用正则表达式对文字进行局部替换

    比如有个字符串http://www.55188.com/thread-8306254-2-3.html,需要把8306254后面的2替换成其它数字,其它保持不变,该如何办呢?请看代码: var url ...

  5. (C++)i++和++i,哪个效率高一些

    在看<程序员面试笔试宝典>时,发现了这样一个问题,书中只给出了++i的效率高一些,但并没有给出具体的解释和说明. 在网上找到下面的答案: 1.从高级层面上解释 ++i 是i=i+1,表达式 ...

  6. (LeetCode 189)Rotate Array

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...

  7. Hibernate(十四)缓存

    一.什么是缓存 缓存是介于应用程序和永久必数据存储源之间,目的是为了降低应用程序直接读写永久必数据存储源的频率,从而提高运行性能 缓存通常是在内存中的如: Office中的Word.excel Hib ...

  8. Spark1.0.0 生态圈一览

          Spark生态圈,也就是BDAS(伯克利数据分析栈),是伯克利APMLab实验室精心打造的,力图在算法(Algorithms).机器(Machines).人(People)之间通过大规模集 ...

  9. Codeforces 417D Cunning Gena(状态压缩dp)

    题目链接:Codeforces 417D Cunning Gena 题目大意:n个小伙伴.m道题目,每一个监视器b花费,给出n个小伙伴的佣金,所须要的监视器数,以及能够完毕的题目序号. 注意,这里仅仅 ...

  10. Linux 系统访问控制列表ACL

    常见的文件系统的一般权限(rwx).特殊权限(SUID,SGID,STICK).隐藏权限(chattr)其实有个共性——权限是针对某一类用户设置的.而如果希望对某个指定的用户进行单独的权限控制,那么就 ...