`
yjkun
  • 浏览: 13515 次
  • 性别: Icon_minigender_1
  • 来自: 河北
文章分类
社区版块
存档分类
最新评论

关于list的remove

 
阅读更多
1.注意for循环remove对象 list.size()是在不断变化中的注意数组越界问题
2.注意使用iterator遍历remove(it.next())对象会抛出ConcurrentModificationException异常因为Iterator是工作在一个独立的线程中,并且拥有一个 mutex锁,就是说Iterator在工作的时候,是不允许被迭代的对象被改变的。Iterator被创建的时候,建立了一个内存索引表(单链表),这 个索引表指向原来的对象,当原来的对象数量改变的时候,这个索引表的内容没有同步改变,所以当索引指针往下移动的时候,便找不到要迭代的对象,于是产生错 误。所以要注意索引和Iterator不能混用
因此 解决方法:

  1.倒过来遍历list

  for (int i = list.size()-1; i > =0; i--) {

  if (((String) list.get(i)).startsWith("abcde")) {

  list.remove(i);

  }

  }

  2.每移除一个元素以后再把i移回来

  for (int i = 0; i < list.size(); i++) {

  if (((String) list.get(i)).startsWith("abcde")) {

  list.remove(i);

  i=i-1;

  }

  }

  3.使用iterator.remove()方法删除

  for (Iterator it = list.iterator(); it.hasNext();) {

  String str = (String)it.next();

  if (str.equals("chengang")){

  it.remove();

  }

  }

  }

  System.out.println("after remove:list.size()=" + list.size());

  }

  }
分享到:
评论
1 楼 x3553x 2012-06-25  
 2.每移除一个元素以后再把i移回来

  for (int i = 0; i < list.size(); i++) {

  if (((String) list.get(i)).startsWith("abcde")) {

  list.remove(i);

  i=i-1;

  }

  }

如果 第一个移除的数 i=0 了

相关推荐

    List.removeAll() 方法的性能效率

    在Java编程语言中,`List.removeAll()`方法是一个非常实用的函数,它允许我们从列表中一次性移除所有指定元素。这个方法是集合框架的一部分,它提供了高效的方式来进行元素的删除操作。本文将深入探讨`removeAll()`...

    list用remove实现结构体成员的删除

    总结一下,使用 `list` 的 `remove()` 方法删除结构体成员(对象实例)的关键在于找到要删除的元素,并根据其唯一的标识进行匹配。在实际编程中,我们还需要考虑到异常处理和对原列表的影响,以及选择合适的删除策略...

    基于C++ list中erase与remove函数的使用详解

    这篇文章主要讲解了`list`中的两个重要成员函数`erase`和`remove`,它们用于删除链表中的元素。理解这两个函数的正确用法对于编写高效且无误的C++代码至关重要。 首先,`erase`函数的主要作用是删除链表中特定位置...

    remove函数使用详解

    list.remove( element ) 1 参数 element:任意数据类型(数字、字符串、列表等) 2. 删除普通类型元素 删除一个列表中「存在」的数字或字符串 list1 = ['zhangsan', 'lisi', 1, 2] list1.remove(1) # 删除数字 ...

    list的正确remove姿势

    List mList = new ArrayList(); mList.add(1); mList.add(2); mList.add(3); mList.add(4); mList.add(5); /** * 正常删除 */ for (int i = 0;... mList.remove(i); } } printList(mList)

    CSharp_List.zip_C# list_C#中list_C#中list的用法_C#怎么引用List_c# list

    在C#编程中,`List&lt;T&gt;`是.NET框架中常用的一种动态数组,它属于泛型集合,提供了丰富的功能,使得在处理一系列数据时更加灵活高效。`List&lt;T&gt;`类是`System.Collections.Generic`命名空间的一部分,它实现了`IList&lt;T&gt;`...

    list to list 将list内容移到另一个list

    列表可以通过索引来访问元素,并支持多种操作,如添加元素(append、extend)、删除元素(remove、pop)、排序(sort)等。 2. **列表复制**:将一个列表的内容完全复制到另一个列表,可以使用 `copy()` 方法或切片...

    JAVA的LIST接口的REMOVE重载方法调用原理解析

    JAVA LIST接口的REMOVE重载方法调用原理解析 JAVA中的LIST接口提供了多个重载的REMOVE方法,分别传入参数为索引index、Object、Integer等,这些重载方法的调用原理是什么?在实际开发中,我们经常会遇到这种情况,...

    线性表list_array的源代码(c语言)

    int list_remove(struct list *list, int index); void list_set(struct list *list, int index, int value); void list_add(struct list *list, int index, int value); int list_lookup(struct list *list, int ...

    【Robotframework】列表List的常用操作.pdf

    如 `@{listnew} Remove Duplicates ${list}` 创建一个没有重复元素的新列表,并通过 `List Should Not Contain Duplicates ${listnew}` 检查新列表是否不包含重复项。 5. **List Should Contain Sub List**: 检查一...

    测试listBox1.Items.Remove是用ToString还是利用gethashCode来定位元素的

    标题提到的“测试`listBox1.Items.Remove`是用`ToString`还是利用`GetHashCode`来定位元素”,实际上涉及到两种不同的方法来确定元素身份。 1. **ToString()** 方法: 在C#中,`ToString()`是一个基础方法,用于将...

    Python列表list内建函数用法实例分析【insert、remove、index、pop等】

    - **语法**:`list.remove(obj)` - **参数**: - `obj`:任何数据类型,将在列表中被移除。 - **示例**: ```python my_list = [1, 2, 3, 4, 2, 5] my_list.remove(2) print(my_list) # 输出: [1, 3, 4, 2, 5] ...

    删除List中的重复值

    public static void removeDuplicate(List list) { for ( int i = 0 ; i &lt; list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j &gt; i; j -- ) { if (list.get(j).equals(list.get(i))) { list....

    Java list.remove( )方法注意事项

    `remove()`方法是`List`接口中的一个关键操作,用于从列表中删除指定的元素或根据索引移除元素。在使用`remove()`方法时,需要注意一些重要的细节以避免潜在的问题和错误。下面将详细介绍`List.remove()`方法的两种...

    java的list取之方法

    然而,给出的部分内容却是一段关于导入Excel文件到Web应用中的代码片段,并没有直接涉及List的具体操作方法。因此,我们将结合标题与描述,围绕Java中List的相关知识点进行详细阐述。 ### Java中的List概述 在Java...

    RemoveDrive卸载U盘或者移动硬盘

    在Windows命令提示符中,输入`diskpart`进入磁盘分区工具,然后输入`list disk`查看所有磁盘,找到你的U盘或移动硬盘对应的编号。 3. 接着,输入`select disk n`(n为刚刚记下的设备编号),选择目标磁盘。 4. 输入`...

    C#_StringList的用法

    aList.Remove("a"); 结果为 bcde。 2. public virtual void RemoveAt(int index):移除 ArrayList 的指定索引处的元素。 例如:ArrayList aList = new ArrayList(); aList.Add("a"); aList.Add("b"); aList.Add("c...

    js模拟list和map

    javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 &lt;br&gt;List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...

    STL中list的使用

    在标准模板库(STL)中,`list`容器是一个双向链表,它提供了高效的插入和删除操作,尤其是在列表的头部或尾部进行操作时,性能尤为突出。下面将详细介绍`list`的各种功能和用法。 ### 创建和初始化 1. **空list**...

    C# List用法详解

    2. List.RemoveAt(int index):删除指定索引处的元素,例如:mList.RemoveAt(0); 3. List.RemoveRange(int index, int count):从指定索引处删除指定个数的元素,例如:mList.RemoveRange(3, 2); 判断某个元素是否...

Global site tag (gtag.js) - Google Analytics