精华内容
下载资源
问答
  • list删除元素

    2017-01-21 22:12:07
    for循环 增强for循环 迭代器删除 结论当想要删除list中的元素时想到3种方法,for循环、增强for循环、迭代器循环遍历,但其实有的操作是不能得到正确结果的。

    当想要删除list中的元素时想到3种方法,for循环、增强for循环、迭代器循环遍历,但其实有的操作是不能得到正确结果的。
    首先初始化要操作的数据

    public static void init(){
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        System.out.println("初始化:"+list.size());
    }

    for循环

    for (int i = 0; i < list.size(); i++) {
        System.out.println("第"+i+"次删除");
        System.out.println("list长度:"+list.size());
        if (i<5) {
            list.remove(i);
        }
    }

    然而程序运行结果并不是执行了5次remove(),

    0次删除
    list长度:51次删除
    list长度:42次删除
    list长度:3

    增强for循环

    删除元素后继续循环会报错误信息java.util.ConcurrentModificationException,因为元素在使用的时候发生了并发的修改,导致异常抛出。但是删除完毕马上使用break跳出, 则不会触发报错,跳出循环这就意味着后面有匹配的元素也不能删除了。

    for(String string :list){
        if (string.equals("b")) {
            list.remove(string);
            break;
        }
    }

    迭代器删除

    使用迭代器删除元素就不会遇到上面的问题了,下面的代码会把list中所有的“a”全部删除。

    for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            String string = (String) iterator.next();
            if (string.equals("a")) {
                iterator.remove();
            }
        }

    结论

    前两种方法在删除单个指定元素的时候是可以的,当删除多个元素的时候就会出现问题,迭代器的话是单个多个删除都没有问题的,所以在删除的时候应该使用第三种方法。

    展开全文
  • C++之list删除元素

    2020-12-25 13:43:49
    C++之list删除元素 对容器list存储的元素执行删除操作的时候,一般都是使用其成员函数实现的: (1)clear():删除list容器中的所有元素 (2)remove(value):删除容器中所有为value的元素 (3)remove_if...

                                                          C++之list删除元素

            对容器list存储的元素执行删除操作的时候,一般都是使用其成员函数实现的:

    (1)clear():删除list容器中的所有元素

    (2)remove(value):删除容器中所有为value的元素

    (3)remove_if():删除容器中满足条件的元素

    (4)unique():删除容器中相邻的重复元素,只留下一个

    (5)erase():删除 list 容器中指定位置处的元素,也可以删除容器中某一段的多个元素

    (6)pop_front():删除首元素

    (7)pop_back():删除尾元素

    (8)删除某索引后的所有元素

    bool deleteFromCurrentIndex(int index = 3)
    	{
    		if(myList->size() < index + 1)
    		{
    			return false;
    		}
    
    		for (std::list<string>::iterator iter = myList->begin(); ;)
    		{
    			advance(iter, index);
    			if(iter == myList->end())
    			{
    				break;
    			}
    			myList->erase(iter);
    			iter = myList->begin();
    		}
    		return true;
    	}

     

    展开全文
  • java List删除元素

    2020-07-21 17:44:18
    前言:java 中List删除元素主要有四种方式: 正序遍历,调用List接口Remove()方法; 反序遍历,调用List接口Remove()方法; 使用迭代器Iterator(推荐); 复制给新的List 参考文章:...

    目录

    1、正序遍历,调用List接口Remove()方法

    2、反序遍历,调用List接口Remove()方法

    3、使用迭代器Iterator(推荐)

    4、复制给新的List


    前言:java 中List删除元素主要有四种方式:

    • 正序遍历,调用List接口Remove()方法;
    • 反序遍历,调用List接口Remove()方法;
    • 使用迭代器Iterator(推荐);
    • 复制给新的List

    参考文章:https://www.cnblogs.com/yanl55555/p/12541876.html

    各有千秋,以下是详细内容:


    1、正序遍历,调用List接口Remove()方法

    • 现象:List接口有remove()这个方法,我们只需要调用remove()方法,就可以删除list中的某个元素。但是list自带的有一些坑,在相邻有相同元素的时候,如果正序遍历调用Remove()函数,只能删除第一个元素。比如,[a,a,b,c] ,正序遍历删除只能删除第一个a
    • 原因:List删除重复元素的第一个元素a后,List重排,第一个a之后的所有元素的坐标向左移一位。那么第二个a的坐标左移一位,此时正序遍历的指针又右移了一位,相当于第二个a就和遍历指针错开了,因此不会遍历到第二个a。
    • 解决:每次删除之后,将遍历指针自减1,这样保证遍历指针始终都能够遍历List中剩下的元素。

    如图所示:

     

     


    2、反序遍历,调用List接口Remove()方法

    先从后边的元素开始循环,一个一个的往前面循环,找出特定元素删除

     

    这样,就算删除了倒数第一个"a"元素,list重排,也只是把后边的元素左移1位,此时倒数第一个“a”元素(下标为1)被删除,接着b替代了a成为了下标为1的元素,但前边的元素不变,i--  = 0 后依然能够找到其相邻的a元素。


    3、使用迭代器Iterator(推荐)

    Iterator.remove() 方法会在删除当前迭代对象的同时,会保留原来元素的索引。所以用迭代删除元素是最保险的方法,建议大家使用List过程,这其实和上面第一中方法类似,只不过iterator内部帮我们做了类似i-1的操作。推荐使用这种做法,因为我们不保证每次都记得手动把下标减去1。

     


    4、复制给新的List

    其实我们可以转换思维,可以过滤掉不需要的元素后赋值给新的list对象。

    利用java8的lambda表达式和强大的stream流形式进行内部迭代来过滤掉特定元素,我们只需一行代码就可以实现。虽然这种方式比较简洁,但是定义了新变量,旧的list就只能等待漫长的gc了。

    展开全文
  • Python从list删除元素

    2017-09-05 09:30:23
    Python从list删除元素 Paul同学刚来几天又要转走了,那么我们怎么把Paul 从现有的list中删除呢?如果Paul同学排在最后一个,我们可以用list的pop()方法删除: L = [‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’] ...

    Python从list删除元素
    Paul同学刚来几天又要转走了,那么我们怎么把Paul 从现有的list中删除呢?

    如果Paul同学排在最后一个,我们可以用list的pop()方法删除:

    L = [‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’]
    L.pop()
    ‘Paul’
    print L
    [‘Adam’, ‘Lisa’, ‘Bart’]
    pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,所以我们执行 L.pop() 后,会打印出 ‘Paul’。

    如果Paul同学不是排在最后一个怎么办?比如Paul同学排在第三:

    L = [‘Adam’, ‘Lisa’, ‘Paul’, ‘Bart’]
    要把Paul踢出list,我们就必须先定位Paul的位置。由于Paul的索引是2,因此,用 pop(2)把Paul删掉:

    L.pop(2)
    ‘Paul’
    print L
    [‘Adam’, ‘Lisa’, ‘Bart’]
    任务
    注意右边编辑器代码中 list 如下:

    L = [‘Adam’, ‘Lisa’, ‘Paul’, ‘Bart’]

    Paul的索引是2,Bart的索引是3,如果我们要把Paul和Bart都删掉,请解释下面的代码为什么不能正确运行:

    L.pop(2)
    L.pop(3)

    怎样调整代码可以把Paul和Bart都正确删除掉?

    展开全文
  • Java中List 删除元素 Java中List 删除元素会使集合大小减少,合理删除的一些方法。 1:删除后的元素i-1 删除一个元素后,后边的元素左移1位,此时i-1,保证了下次循环能访问到左移了1位的元素。 注意: 在进行...
  • stl list 删除元素 list.remove()和list.remove_if()函数 (list.remove() and list.remove_if() functions) remove() function is used to remove all occurrences of a given element from the list and function ...
  • python list 删除元素

    2018-08-08 16:10:49
    1. num_list.remove(2),会删除第一个值为2的元素。 2. num_list.pop(1),会弹出索引为1的元素,若不传参数,则弹出最后一个元素。 3. del num_list[1],会删除索引为1的元素。 4. 还可以使用切片来达到目的,...
  • 然后就找了python删除list元素的方法 remove(value) del list[index] 开始用的remove方法,但是本来有两个重复数据,运行完了只能删除其中一个,找了半天后来在一篇文章中获得了启发 原文...
  • 1、用for或foreach遍历list删除元素,为什么会抛出ConcurrentModificationException异常,一定会抛出ConcurrentModificationException异常吗? 1)为什么会抛出ConcurrentModificationException异常 2)一定会抛出...
  • 要搞清楚这个问题,首先要知道如何正确的遍历List删除元素。注:下述代码完整版附在末尾。 先给出这次测试的list初始化结构: list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add(...
  • Java 集合List删除元素

    2017-08-16 10:33:13
    }这种方式的问题在于,删除某个元素后,list的大小发生了变化,而索引也在变化,所以会导致在遍历的时候漏掉某些元素。比如当删除第1个元素后,继续根据索引访问第2个元素时,因为删除的关系后面的
  • Python之列表list删除元素

    千次阅读 2019-01-05 14:38:50
    0、废话不多说,在List对象中,元素删除,也是很重要的知识点,pop方法会返回删除掉的元素,这是一个很好的点子 1、代码走起 def printListWithChinese(resource): print str(resource).decode('string_escape...
  • 在java中,如果要删除List中的后n个元素,可以选择这个方法:循环n次,每次删除List的最后一个元素。下面是一个例子(删除一个拥有6个元素的后三个元素):import java.util.LinkedList;import java.util.List;public ...
  • li = [1, 2, 3, 4] del li[3] print(li) # Output [1, 2, 3]
  • 可以采用for循环正序遍历删除元素(有弊端) 可以采用for循环倒序遍历删除元素 可以采用iterator遍历进行删除 代码实现: 测试方法: @Test public void test(){ List<Integer> list = new ArrayList<...
  • 以一个list中的元素为下标,或者用一个数组中的元素为下标,来删除某个list中对应下标的元素。 package cn.iponkan.test; import static org.junit.Assert.*; import java.text.MessageFormat; import ...
  • java List删除元素问题及解决办法

    万次阅读 2016-08-02 21:49:48
    删除List中值为2的元素List list = new ArrayList(); list.add(1); list.add(2); list.add(2); list.add(3); list.add(4); System.out.println("----------list大小1:--"+list.size()); for (int i
  • foreach遍历list删除元素一定会报错?

    千次阅读 2019-05-29 11:09:39
    foreach遍历list集合删除某些元素一定会报错吗? 先上一段代码: List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); for (String item : list) { if ...
  • python list删除元素时的遗漏问题

    千次阅读 2017-05-01 12:09:13
    列表删除元素可以使用pop,remove。pop的参数为索引,默认情况下删除最后一个元素,remove的参数是元素本身。无法删除所有元素下面介绍使用remove删除元素时遇到的一个”奇怪”问题。list_test.py实现删除一个列表中...
  • STL 中list删除元素

    千次阅读 2013-04-24 11:01:42
    list容器中删除元素分如下两种情形,第一种是很大条地使用remove函数输入list的头部iterator和尾部iterator,如下代码 list ilist; ilist.push_back(1); ilist.push_back(2); remove(ilist.begin(),ilist.end(),1);...
  • c++ list删除元素例子

    千次阅读 2016-11-01 16:58:57
    直接上代码  vs2013 #include "stdafx.h" #include #include #include using namespace std; ...int _tmain(int argc, _TCHAR* argv[]) ...std::list mList; mList.push_back(1); mList.push_back(2);
  • 初始化list,要求:删除list中的奇数 List&lt;Integer&gt; list = new ArrayList&lt;&gt;(); list.add(1); list.add(2); list.add(3); list.add(4); 方式1:声明一个新的list存放符合...
  • list删除元素的方法——python

    千次阅读 2018-06-20 22:28:08
    我们以一个字符串为元素类型的 list 为例,进行列表元素删除: &gt;&gt;&gt; l = ['no surfing', 'flippers'] 1 法一:remove(val) &gt;&gt;&gt; l.remove('no surfing') &gt;&...
  • 一、vector删除元素 容器类型 函数 是否改变容器大小 vector pop_back() YES vector erase(iterator) YES vector erase(iterator,iterator) YES vector remove NO #include<iostream> #...
  • python list删除元素的几种方式

    千次阅读 2018-10-19 10:12:07
    指定元素进行删除 remove(x) remove() 函数用于移除列表中 某个值的第一个匹配项,如果有多个则删除第一个 , 注意list中不存在x,执行会报错 无法指定位置进行删除 &amp;gt;&amp;gt;&amp;gt; a=[1,2,...
  • foreach遍历list删除元素一定会报错?

    万次阅读 多人点赞 2016-08-01 18:42:23
    list集合平常自以为用的非常熟了,原来只是用add()方法熟练而已,碰到...来,给list集合删除某些元素,先上一段代码:  1)报错啦  List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3")

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,278
精华内容 7,711
关键字:

list删除元素