list.remove(obj)

从一个List中移除重复的数据

使用迭代方法会报异常:java.util.ConcurrentModificationException

Map<String, Interger> temp = new
HashMap<String, Interger>();
for (GroupRule rule : ruleList)
{
  String ruleName = rule.getName();
  if (temp.get(ruleName) == null)
{
    temp.put(ruleName, 1);
  } else
{
    ruleList.remove(rule);
  }
}
temp.clear();

  主要是原因是该种方法是内部调用Iterator循环的一种实现,而在Iterator循环移除对象时只能用it.remove(),而不能用list.remove(obj),否者报并发错误。这是由于AbstractList中的 modCount和expectedModCount 两个参数在list.remove(obj)之后不相等导致的。

用it.remove()的代码如下:

Map<String, GroupRule> temp = new
HashMap<String, GroupRule>();
List<GroupRule> resList =
new ArrayList<GroupRule>();
boolean hasNickName=false;

for(Iterator<GroupRule> iter = ruleList.iterator(); iter.hasNext();)
{
  GroupRule rule = iter.next();
  String ruleName =
rule.getName();
  if (!hasNickName && "nick_name".equals(ruleName))
{
    hasNickName=true;
  }
  if (temp.get(ruleName) == null)
{
    temp.put(ruleName, rule);
  } else
{
    iter.remove();
  }
}
temp.clear();

用for循环可以在遍历List的时候list.remove(),代码如下:

Map<String, Interger> temp = new
HashMap<String, Interger>();
int len = ruleList.size();

for (int i=0; i< len; i++ ) {
  GroupRule rule =
ruleList.get(i);
  String ruleName = rule.getName();
  if
(temp.get(ruleName) == null) {
    temp.put(ruleName, 1);
  } else
{
    ruleList.remove(rule);
    len--;
    i--;
  }

}
temp.clear();

时间: 2024-11-03 21:06:50

list.remove(obj)的相关文章

Python List remove()方法-用于移除列表中某个值的第一个匹配项

描述 remove() 函数用于移除列表中某个值的第一个匹配项. 语法 remove()方法语法: list.remove(obj) 参数 obj -- 列表中要移除的对象. 返回值 该方法没有返回值但是会移除两种中的某个值的第一个匹配项. 实例 以下实例展示了 remove()函数的使用方法: #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz']; aList.remove('xyz'); print "List : &quo

列表 List remove()方法

描述 remove() 函数用于删除列表中某个值的第一个匹配项. 语法 list.remove(obj)    一次只能删除一个元素. del list[]               一次删除多个元素. 参数 obj -- 列表中要删除的对象. 返回值 该方法没有返回值但是会移除两种中的某个值的第一个匹配项. 实例  01 remove()的使用方法: 1 #Author:Junce Liu 2 City = ["杭州","苏州","广州",&

谈谈Python中pop与remove的用法

remove() 函数用于移除列表中某个值的第一个匹配项. remove()方法语法:  list.remove(obj) 如果obj不在列表中会引发 ValueError 错误,通常先使用count方法查看有多少个obj pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. pop()方法语法:  list.pop(obj=list[-1]) 接下来发现网上的另一篇文章貌似说的不是很合理 https://www.jb51.net/article/132501.ht

Python3 列表

序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

python的列表,元组和字典简单介绍

引 入 java                                   python 存取多个值:数组或list集合 ------------------------> 列表,元组 key-value格式:    Map        ------------------------>    字典 自己学习发现,java跟python这两门面向对象语言在数据类型的定义上,很多思想都是互通的,这里不说java,简单介绍一下python的列表,元组和字典. 一.列表 List: 最通

列表和元组——Python学习系列之二

列表和元组 数据结构:是通过某种方式组织在一起的数据元素的集合,这些元素可以是数字或者是字符,甚至可以是其他数据结构. 序列 序列中每一个元素被分配一个序号--即元素的位置,也称索引. python有6种内建序列:字符串(一个由字符组成的序列).元组.列表.Unicode字符串.buffer对象.xrange对象. 通用序列操作 索引 序列中的所有元素都是有编号的--从0开始递增. >>> seq_str = 'Hello world!' >>> seq_str[0]

django上课笔记4

一.复习数据库操作 字段类型 字符串 EmailField(CharField): IPAddressField(Field) URLField(CharField) SlugField(CharField) UUIDField(Field) FilePathField(Field) FileField(Field) ImageField(FileField) CommaSeparatedIntegerField(CharField) 时间类: models.DateTimeField(null

列表知识点整理

列表(可变数据类型) 列表的定义 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 列表是打了激素的数组,数组只

Java集合框架学习笔记

本文为学习笔记,学习课程为慕课网Java入门第三季中的集合框架部分,若需要研究文中的代码,可前往下载.http://www.imooc.com/learn/110 1. List(Collection子接口) 1.1 实例化 List list = new ArrayList(); ??List是一个接口,不可直接实例化,通常情况下ArrayList实现类进行实例化. 1.2 增 1.2.1 add(obj) ??直接将obj对象加入List末位. 1.2.2 add(i, obj) ??将ob