精华内容
下载资源
问答
  • List 删除指定元素

    2018-08-01 10:40:00
    1.模型: listA 仅存储待删除元素,listB为进行删除操作的集合(list内都存储实体类如User类 ,即List<User>)。 2.解决办法: 先决条件:listB 中 buyerId不允许重复 for (User userW: listA) { for (User...

    1.模型: listA 仅存储待删除的元素,listB为进行删除操作的集合(list内都存储实体类如User类 ,即List<User>)。

    2.解决办法:

    先决条件:listB 中 buyerId不允许重复

    for (User userW: listA) {
    for (User userR: ListB) {
    if (userW.getBuyerId().equals(usrR.getBuyerId())) {
                listA.remove(usrR);
    break;
    }
    }
    }

     

    转载于:https://www.cnblogs.com/fenghuaxiao/p/9399902.html

    展开全文
  • List删除指定元素 在List类中,提供了删除元素的remove()方法,有如下两种传参方式 1.根据index删除,会删除指定位置的元素,源码如下 public E remove(int index) { try { ListIterator<E> e = ...

     List删除指定元素

    在List类中,提供了删除元素的remove()方法,有如下两种传参方式

        1.根据index删除,会删除指定位置的元素,源码如下

    public E remove(int index) {
        try {
            ListIterator<E> e = listIterator(index);
            E outCast = e.next();
            e.remove();
            return outCast;
        } catch (NoSuchElementException exc) {
            throw new IndexOutOfBoundsException("Index: "+index);
        }
    }

        2.根据对象删除 ,源码如下,该方法使用equals方法判断是否为要删除的对象,经测试,使用list.remove(object)方法后,仅删除集合中第一个满足条件的元素

    public boolean remove(Object o) {
        Iterator<E> it = iterator();
        if (o==null) {
            while (it.hasNext()) {
                if (it.next()==null) {
                    it.remove();
                    return true;
                }
            }
        } else {
            while (it.hasNext()) {
                if (o.equals(it.next())) {
                    it.remove();
                    return true;
                }
            }
        }
        return false;
    }

    根据上述提到的两种方法,可以对List中元素进行删除,但是当需要删除的元素不止一个时,需要循环删除元素,就会产生一些问题

        1.采用for循环由小到大删除时,采用remove(int index)方法,会出现指针越界异常。因为移除List中的一个元素后,List长度会减少,但for循环的次数仍是原本List的长度

    for(int i = 0,j = numberList.size();i < j;i++){
                if(numberList.get(i).equals(element)){
                    numberList.remove(element);
                }
            }
    
    //异常如下
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 11, Size: 10
    	at java.util.LinkedList.checkElementIndex(LinkedList.java:555)
    	at java.util.LinkedList.get(LinkedList.java:476)
    	at com.Test.ListTest.main(ListTest.java:29)

        2.当使用Iterator迭代器或是增强for循环遍历数组时,采用remove(Objec o)移除元素时,仍然会出现异常。因为执行 该方法后,对 list 对象的 modCount 值进行了修改,而 list 对象的迭代器的 expectedModCount 值未进行修改

    for(Long l : numberList){
                if(l.equals(element)){
                    numberList.remove(element);
                }
            }
     Iterator iterator = numberList.iterator();
            while (iterator.hasNext()){
                if(iterator.next().equals(element)){
                    numberList.remove(element);
                }
            }
    //异常如下
    Exception in thread "main" java.util.ConcurrentModificationException
    	at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966)
    	at java.util.LinkedList$ListItr.next(LinkedList.java:888)
    	at com.Test.ListTest.main(ListTest.java:22)

    正确的删除方式有三种:

       1.正序for循环删除,由于删除后List中的元素会前移一位,所以我们首先i--将指针移到被前移的元素上,再将数组长度-1,防止指针越界

            for(int i = 0,j = numberList.size();i < j;i++){
                if(numberList.get(i).equals(element)){
                    numberList.remove(element);
                    j--;
                    i--;
                }
          

        2.倒序for循环删除,List由最后一位向前循环,每次移除元素,指针都会前移一位,总移动次数也与数组长度相同

            for(int i= numberList.size()-1;i >= 0;i--){
                if(numberList.get(i).equals(element)){
                    numberList.remove(element);
                }
            }

    3.迭代器删除,该方法与错误迭代器方法的不同就是需要采用迭代器的remove()方法,而不是List中的remove(Object o)方法

            Iterator iterator = numberList.iterator();
            while (iterator.hasNext()){
                if(iterator.next().equals(element)){
                    iterator.remove();
                }
            }

    List删除与另一List相同元素的方法

        上面说完了简单情况下的List循环删除,实际开发中情况可能更为复杂,需要根据两集合中,元素同名同类型属性值相同,去移除其中一个集合中的元素

        1.有集合a和集合b,现在需要将a从移除a与b的子集,如果集合中的元素可以用"=="或者"equals()"方法判定是否相同,那么可以使用List中提供的removeAll(Collection c)方法,该方法可以将a中的a与b子集含有的元素全部删除,缺点是执行效率较低

            //生成1-100的随机数,集合a
            List<Long> numberList = new LinkedList<>();
            for(int i = 0 ; i < 10 ; i++){
                numberList.add((long)(Math.random()*100+1));
                numberList.add(10L);
            }
    
            Long element = 10L;
    
            //集合b
            List<Long> targetList = new LinkedList<Long>();
            targetList.add(element);
    
            numberList.removeAll(targetList);
            System.out.println(numberList);

        2.当情况更为复杂,无法使用equals()方法判断两元素是否相同,或者根据两元素各自的某项属性值判断是否需要移除时,则需要使用双重循环,逐条进行对比,为防止指针越界异常,当移除了元素后,需调整指针位置和循环次数。此处我使用倒序删除的方式,可以避免手动移动指针。值得注意的是:内层循环每次判断元素属性值相同,做移除操作后,必须中断循环,这样指针前移后,又重新循环集合b,避免漏删和空指针的情况。

    for(int i = heroes.size()-1;i >= 0;i--){
                for(int j = idols.size()-1;j >=0;j--){
                    if(heroes.get(i).getBrave() == idols.get(j).getBrave()){
                        heroes.remove(i);
                        break;
                    }
                }
            }
    
    //执行结果如下
    集合a:
    [Name:tom  Brave100, Name:tony  Brave50, Name:tony  Brave20, Name:tom  Brave100, Name:tony  Brave50, Name:tony  Brave20]
    集合b:
    [Name:kk  Brave20, Name:kk  Brave20, Name:cc  Brave50]
    删除后的集合a:
    [Name:tom  Brave100, Name:tom  Brave100]

       3.迭代器实现的方法,运行结果和上面for循环方法的结果相同,缺点是必须使用引用指向强转后的iterator.next(),优点是不用思考指针如何移动

            while (heroeIterator.hasNext()){
                while (idolIterator.hasNext()){
                    Hero h = (Hero)heroeIterator.next();
                    Idol i = (Idol)idolIterator.next();
                    if(h.getBrave() == i.getBrave()){
                        heroeIterator.remove();
                    }
                }
            }
    

     

    展开全文
  • java List删除指定元素有3种方法,分别是普通for循环,增强for循环以及原生的Iterator迭代器循环来删除list中指定的某个元素,非常的简单。1:普通for循环遍历list,并删除指定的元素。Listlist=newArrayList();list...

    java List删除指定元素有3种方法,分别是普通for循环,增强for循环以及原生的Iterator迭代器循环来删除list中指定的某个元素,非常的简单。

    1:普通for循环遍历list,并删除指定的元素。List list = new ArrayList();

    list.add("str1");

    list.add("str2");

    list.add("str3");

    for (int i = 0; i 

    if(list.get(i) == "str2"){

    list.remove(i);

    i--;

    }

    }

    System.out.println(list.size());

    2:增强for循环删除指定的List元素。for (String string : list) {

    if(string == "str2"){

    list.remove(string);

    }

    }

    System.out.println(list.size());

    3:使用原生的Iterator迭代器对象遍历List集合,并删除List指定的元素。Iterator iterator = list.iterator();

    while(iterator.hasNext()){

    String next = iterator.next();

    if(next == "str2"){

    iterator.remove();

    }

    }

    System.out.println(list.size());

    总结:java List删除指定元素可以使用上面三种方法中的任意一种方法,如果要删除List中所有的元素,推荐使用Iterator迭代器方法。

    来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/452.html

    展开全文
  • js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单。1、JS的数组对象定义一个...

    js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单。

    77dc593027f4030d736cb51529d05c33.png

    1、JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,也就是索引值,代码如下:

    Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; };

    2、使用通过得到这个元素的索引,使用js数组自己固有的函数去删除这个元素,代码如下:

    Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1);  } };

    这样就构造了这样一个js数组删除函数

    3、案例:要删除如下myCase数组中的 'cd':

     var myCase=new Array("abk
    展开全文
  • Java教程分享List接口,List本身是Collection接口的子... List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。 |--ArrayList:底层的数据结构是数组,线程不同步,ArrayList替代了Vector...
  • 使用list带大家学习删除元素还是第一次,话不多说,直接给大家演示实例,大家在今后使用中可以学会套用,一起来看下吧~ 示例内容演示: 注意代码中 list 如下: L = [‘Adam’, ‘Lisa’, ‘Paul’, ‘Bart’] Paul...
  • redis 数据结构之链表 List为了解释 List 数据类型,最好从一点理论开始,因为术语 List 经常被信息技术人员以不正当的方式使用。...一般看来,List 只是一系列有序元素。例如:10,20,1,2,3 是一个 List。但是使用 A...
  • 先使用谷歌浏览器访问自己的微博首页,在自己微博里,使用搜索功能过滤出指定日期所有带图片的微博,不过滤的话将删除所有微博。接着,按F12,调出后台工具,点击console,将以下代码复制进去,直接回车即可。如果...
  • 这是用v-show控制的元素 v-for 索引值:{{i}} --- 每一项:{{item}} Id:{{ user.id }} --- 名字:{{ user.name }} --- 索引:{{i}} 值是: {{ val }} --- 键是: {{key}} -- 索引: {{i}} 这是第 {{ count }} 次...
  • 顺序表的类型定义和基本操作算法实现#include <stdio.h> #include <...#define listincrement 10 #define ERROR 0 #define OK 1 typedef int Elemtype; typedef int Status; Elemtype ne...
  • 17、Vue.js从Array 中删除元素 "app"> List "(listItem, index) in list">"listItem.a" value="{{listItem.a}}">"deleteList(index)"> Delete List"addList">Add New List{{ list }} new Vue({ el: '#app', data: {...
  • 从链表中移除指定元素 this.remove = function (element) { let index = this.indexOf(element) return this.removeAt(index) } this.isEmpty = function () { return length === 0 } this.size = ...
  • 注意: 允许出现重复元素。insert(val):向集合中插入元素 val。remove(val):当 val 存在时,从集合中移除一个 val。getRandom:从现有集合中随机获取一个元素。每个元素被返回的概率应该与其在集合中的数量呈线性...
  • Java 循环删除list指定元素

    万次阅读 2019-03-01 14:16:00
    Java 循环删除list中指定元素1.for循环遍历删除指定元素2.增强for循环删除指定元素3.iterator删除指定元素 1.for循环遍历删除指定元素 List&lt;String&gt; list = new ArrayList&lt;&gt;(Arrays....
  • 使用Iterator进行循环,在删除指定元素。如果使用for 或 foreach 在删除指定下标是,list.size 会相应的缩短且下标前移,导致相邻满足条件的元素未删除 Iterator<String> it = list.iterator(); while(it....
  • List删除指定元素

    千次阅读 2018-10-22 14:10:15
    第一种: ArrayList&lt;Integer&... list = new ArrayList&lt;Integer&gt;(); list.add(2); list.add(3); list.add(1); for (int i = 0; i &lt; list.size(); i++) { if (l...
  • 今天做项目中遇到一个需要删除 list指定元素的问题,通过网上的查询理解得以解决. 我创建了一个实体的list集合,查询的表假设为a List<People> list = peopleMapper.findList();//findList为一个数据库...
  • Java-删除LIst指定元素

    千次阅读 2020-01-13 14:59:30
    删除List指定元素两种方式 第一种 CandidateTS.remove((Integer) MaxIndex); 第二种 Iterator iter = CandidateTS.iterator(); while (iter.hasNext()) { if (iter.next().equals(Max...
  • 遍历list集合删除指定元素方法今天的在项目中犯的一个错误记录一下:刚开始粗心写成for喜欢遍历 这样会出现下表越界的问题应该是iterate遍历移除集合中的元素以下是转载:一种错误的方式:for(inti=0,len=list.size...
  • Iterator<Map<String, Object>> it = list.iterator(); while (it.hasNext()) { if(condition){ it.remove(); } }
  • List删除指定元素

    2014-11-20 16:12:18
     用一个List 记录要删除的数据,最后removeAll(List);  [java] view plaincopy  List removeList = new ArrayList()  for(Integer i : intList)  {   if(i == 13)   {   removeList.add(i);   }...
  • 关于List集合删除指定元素相关问题

    千次阅读 2019-05-28 17:48:49
    JAVA中循环遍历list有三种方式for循环、增强for循环(也...1.for循环删除元素 List<String> list = new ArrayList<String>(); list.add("1"); list.add("2"); list.add("3"); list.add("4");...
  • List数组中删除指定元素

    万次阅读 2019-03-12 09:57:59
    import java.util....import java.util.List; /** * @author 633805 LYH * @version V1.0 * @description 对类的描述 * @create 2019-03-12 8:55 * @since 1.8 */ public class H { public static vo...
  • 一、Java 循环删除list中指定元素增强for循环删除指定元素@Testpublic void test(){String[] strs={"a", "b", "c", "f", "b", "e", "d"};Listlist = new ArrayList<>(Arrays.asList(strs));for (String s : ...
  • 题目:删除元素值为2的元素 package com.webname.util; import java.util.ArrayList; import java.util.List; public class testList { public static void main(String[] args) { List&lt;Integer&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,043
精华内容 817
关键字:

list删除指定元素