精华内容
下载资源
问答
  • 下面小编就为大家带来一篇ArrayList删除集合中某一属性相同的元素方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 假设有一个list集合: List<string> strList = new List<string>(); strList.Add("header"); strList.Add("founder"); strList.Add("tool" ); 现在我想删除字符串为【header】 方法一: for (int...

    假设有一个list集合:

    List<string> strList = new List<string>();
    strList.Add("header");
    strList.Add("founder");
    strList.Add("tool" );

    现在我想删除字符串为【header】

    方法一:

     for (int i = 0; i < strList.Count; i++)
      {
          if (strList[i]=="header")
          {
             strList.Remove(strList[i]);
             i--;
          }
      }

    重点是里面的i--,不然又会提示:集合已更改。

    方法二(由qq_29814615提供!):

    for (int i = strList.Count - 1; i > -1; i--)
    {
       if (strList[i] == "tool")
       {
          strList.Remove(strList[i]);
       }
    }

     

    展开全文
  • 删除集合中元素

    千次阅读 2018-10-27 15:18:42
    删除集合中元素 public class testzhu { public static void main(String[] args) { List&amp;lt;Integer&amp;gt; integerList = new ArrayList&amp;lt;&amp;gt;(Arrays.asList(1,2,3,4,5...

    删除集合中的元素


    public class testzhu {
        public static void main(String[] args) {
                    
            List<Integer> integerList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8));
            for(int i = 0 ; i < integerList.size() ; i++){
                integerList.remove(i); // 本意是将集合中的元素全部删除
                // 代码运行过程中,集合本身在不断变更,下标同时也在变更
            }
            System.out.println(integerList);
            // [2, 4, 6, 8]
        }
    }
    

    参考资料


    注意事项

    // 删除全部元素
    // 此时提示异常
    public class testzhu {
        public static void main(String[] args) {
                    
            List<Integer> integerList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8));
            Iterator<Integer> iterator = integerList.iterator();
            while (iterator.hasNext()){
    
                iterator.remove();
                // Exception in thread "main" java.lang.IllegalStateException
                //	at java.util.ArrayList$Itr.remove(ArrayList.java:844)
                //	at test.testzhu.main(testzhu.java:23)
    
    
            }
            System.out.println(integerList);
        }
    }
    
    • 异常分析
        /**
         * An optimized version of AbstractList.Itr
         */
        private class Itr implements Iterator<E> {
            int cursor;       // index of next element to return
            int lastRet = -1; // index of last element returned; -1 if no such
            int expectedModCount = modCount;
    
            public boolean hasNext() {
                return cursor != size;
            }
    
            @SuppressWarnings("unchecked")
            public E next() {
                checkForComodification();
                int i = cursor;
                if (i >= size)
                    throw new NoSuchElementException();
                Object[] elementData = ArrayList.this.elementData;
                if (i >= elementData.length)
                    throw new ConcurrentModificationException();
                cursor = i + 1;
                return (E) elementData[lastRet = i];
            }
    
            public void remove() {
                if (lastRet < 0)
                    throw new IllegalStateException();
                checkForComodification();
    
                try {
                    ArrayList.this.remove(lastRet);
                    cursor = lastRet;
                    lastRet = -1;
                    expectedModCount = modCount;
                } catch (IndexOutOfBoundsException ex) {
                    throw new ConcurrentModificationException();
                }
            }
    
            final void checkForComodification() {
                if (modCount != expectedModCount)
                    throw new ConcurrentModificationException();
            }
        }
    
    • 直接调用 Itr 中的 remove 方法,此时 lastRet 初始化值为 -1 会抛出异常
    • 需要调用 Itr 中的 next 方法
      • cursor 为当前游标指向
      • 方法内将集合中的元素进行拷贝赋值给了 elementData ,保证原有集合中数据不变
      • lastRet = i 进行出行赋值
    • 调用 next 后再调用 remove 方法
    public class testzhu {
        public static void main(String[] args) {
                    
            List<Integer> integerList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8));
            Iterator<Integer> iterator = integerList.iterator();
            while (iterator.hasNext()){
                Integer next = iterator.next();
                if(next % 1 == 0){
                    iterator.remove();
                }
            }
            System.out.println(integerList);
        }
    }
    
    展开全文
  • Android使用集合那是家常便饭的事情来的,但是有的时候容易麻痹大意,比如在删除集合元素的过程,我就掉进过坑里,在此总结下来,以后引以为戒。1. 删除一个集合元素 List<Integer> lists = new ArrayList(); ...

    Android中使用集合那是家常便饭的事情来的,但是有的时候容易麻痹大意,比如在删除集合元素的过程,我就掉进过坑里,在此总结下来,以后引以为戒。

    1. 删除一个集合元素

      List<Integer> lists = new ArrayList<>();
            lists.add(1);
            lists.add(2);
            lists.add(3);
            lists.add(4);
            lists.add(5);
            lists.add(6);
            lists.add(7);
            lists.add(8);
            lists.add(9);
    
             for (int i = 0; i < lists.size(); i++) {
                int num = lists.get(i);
                if (num == 6) {
                    lists.remove(i);
                    break;
                }
            }
            LeoLog.ee("剩下的集合:" + lists.toString());

    打出的log:
    这里写图片描述
    删除成功。
    如果用下面这个方法会有一个需要注意的地方。

      for (int num : lists) {
                if (num == 6) {
                    lists.remove((Object) num);
                    //注意:不加break,会报ConcurrentModificationException
                    break;
                }
            }

    2. 删除多个集合元素

    这种是有风险的

     List<Integer> lists = new ArrayList<>();
            lists.add(1);
            lists.add(2);
            lists.add(3);
            lists.add(4);
            lists.add(5);
            lists.add(6);
            lists.add(7);
            lists.add(8);
            lists.add(9);
            for (int i = 0; i < lists.size(); i++) {
                int num = lists.get(i);
                if (num == 4)
                    lists.remove(i);
                if (num == 5)
                    lists.remove(i);
                if (num == 6)
                    lists.remove(i);
            }
            LeoLog.ee("剩下的集合:" + lists.toString());

    打出的log
    这里写图片描述
    发现,我条件要求删除的是4、5、6,但是5没有被移除,发生的原因就是,当4被移除了,然后5的索引就会发生变化。

    当然有一种方式可以这样

    for (int i = 0; i < lists.size(); i++) {
                int num = lists.get(i);
                if (num == 4) {
                    lists.remove(i);
                    //每删一次就重新遍历
                    i = 0;
                }
                if (num == 5)
                {
                    lists.remove(i);
                    //每删一次就重新遍历
                    i = 0;
                }
                if (num == 6)
                {
                    lists.remove(i);
                    //每删一次就重新遍历
                    i = 0;
                }
            }

    但是我感觉最好的方式还是使用iterator(迭代器)

     List<Integer> lists = new ArrayList<>();
            lists.add(1);
            lists.add(2);
            lists.add(3);
            lists.add(4);
            lists.add(5);
            lists.add(6);
            lists.add(7);
            lists.add(8);
            lists.add(9);
    
            Iterator<Integer> iterator = lists.iterator();
            while (iterator.hasNext()) {
                int pos = iterator.next();
                if (pos == 4) {
                    iterator.remove();
                }
                if (pos == 5) {
                    iterator.remove();
                }
                if (pos == 6) {
                    iterator.remove();
                }
            }
            LeoLog.ee("剩下的集合:" + lists.toString());

    删除成功
    这里写图片描述

    展开全文
  • 删除集合中特定元素的几种情况

    千次阅读 2019-01-23 15:44:35
    集合中删除元素一直是一个比较容易遗漏的知识点,今天来给大家介绍一下删除集合​​特定元素的一些情况。 ​(一)List如何实现遍历删除 以ArrayList为例  List&lt;String&gt; a1 = new ArrayList...

    从集合中删除元素一直是一个比较容易遗漏的知识点,今天来给大家介绍一下删除集合​​中特定元素的一些情况。

    (一)List如何实现遍历删除

    以ArrayList为例 

             List<String> a1 = new ArrayList<String>();
                a1.add("Tom");
                a1.add("Tom");
                a1.add("Jerry");
                a1.add("John");
                a1.add("Andy");
                
                Iterator<String> it = a1.iterator();
                while(it.hasNext()) {
                	String next = it.next();
                	if(next.equals("Tom")) {
                		it.remove();
                	}
                }
                for (int i = 0; i < a1.size(); i++) {
    				System.out.println(a1.get(i));
    			}

    运行结果大家可以自己试一下,可以发现两个Tom都被删除了,这种就是利用迭代器来删除List中的元素,是非常正确的做法。LinkedList也是一样。那么除了迭代器还有没有其他做法呢?答案是有的,请看

            List<String> a1 = new ArrayList<String>();
                a1.add("Tom");
                a1.add("Tom");
                a1.add("Jerry");
                a1.add("John");
                a1.add("Andy");
    
            for (int i = 0; i < a1.size(); ) {
    			if(a1.get(i).equals("Tom")) {
    				a1.remove(i);
    			}else {
    				i++;
    			}
    		}

    看到这里有的小伙伴也许会问,为什么要在else的时候再i++呢?这是因为因为集合的长度发生了变化,导致原来的索引指向的元素后移了一位,所以要在不满足删除条件时再i++,不然会导致漏元素,很有可能出现漏删的情况,小伙伴们可以试一下正常把i++放在for的括号里。

    (二)Set如何实现遍历删除

    Set以HashSet为例,注意:Set一般只能用迭代器来遍历

          HashSet<String> a1 = new HashSet<String>();
                a1.add("Tom");
                a1.add("Tom");
                a1.add("Jerry");
                a1.add("John");
                a1.add("Andy");
    
                Iterator<String> it = a1.iterator();  
                while (it.hasNext()) {  
                String str = it.next();  
                if(str.equals("Tom")) {
        	      it.remove();
             }
          }    

    这就是Set的遍历删除方式

    (三)Map如何实现遍历删除

    Map以HashMap为例来说明其遍历删除。

    HashMap<String, String> h1 = new HashMap<String,String>();
            h1.put("Tom", "one");
    	h1.put("Jerry", "two");
    	h1.put("John", "three");
    	h1.put("Andy", "four");
    
    	Iterator<Entry<String, String>> it = h1.entrySet().iterator();
    	while(it.hasNext()) {
    		Entry<String, String> next = it.next();
            //此处为删除特定的key
    		if(next.getKey().equals("Tom")) {
    			it.remove();
    		}
            //此处为删除特定的value
            if(next.getValue().equals("two")) {
    			it.remove();
    		}
    	}
    	//遍历HashMap
    	for (Entry<String, String> string : h1.entrySet()) {
    		System.out.println(string.getKey());
    	}

    小伙伴们自己运行下,就可以发现特定的key和value都删除成功了。

    好了,所有的内容就到这里了,希望能对大家有所帮助。

    展开全文
  • 1.想删除list集合中某个元素,首先list不能用for循坏遍历来删除,需要用迭代循坏,其次,需要在迭代循坏中将要删除元素添加到一个新的list集合中(创建一个list集合),然后在迭代循坏外整体删除这个新的list集合...
  • 为什么说JAVA 集合中 使用...并且同时把这个元素集合中移除,如果你使用的是for循环对自身进行遍历并删除某个元素的操作,那恭喜你,踩坑了! 下面使用两种循环方式来说明一下为什么踩坑! 初始化一个ArrayList集合
  • 今天遇到一个问题,就是在前端想要动态更新集合数据(删除)的时候(初始数据全部信息已保存在集合中) 2.问题解决方式: 通过查资料,集合存在动态删除元素的方法——splice() 2.具体解决方式: for(var k = ...
  • 集合元素去重复 如果想要集合中元素不会有重复,那么推荐使用hashSet,如下: //list是有重复元素的ArrayList ...删除集合中某一属性相同的元素 原料 NetWork nw1 = new NetWork(); nw1.id = 1; nw...
  • 参考https://blog.csdn.net/weixin_42230550/article/details/87990486 vue,如何在方法动态的删除集合中元素? me.btn_element.splice(this.id, 1);
  • Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合元素无序且不可重复。 set类与List大致都是差不多,两者都继承于Collection接口。其所有的方法基本一致。et元素是无序的,且...
  • 刚开始接触遇到一个基础问题:在for循环中删除元素。抛出的异常是"java.util.ConcurrentModificationException"。此处梳理总结一下. 1、模拟异常 @Test 1 public void testException() { 2 List<String> ...
  • 一、list集合循环删除元素 1.通过普通的for删除删除符合条件的多个元素 for(int i=0;ilist.size();i++){ if(list.get(i).equals("del")) list.remove(i); } 上面这种方式会抛出java.lang....
  • 最好的方式:iterator // 系统配置的应用集合 List<ApplicationInfo> applicationInfos = new ArrayList(); // 移除已经存在了的应用集合 Iterator<ApplicationInfo> iterator = applicationInf
  • 实体类User 有三个属性:id name age ...比如说下方数据,我要去除listuser对象id为i的数据,只留下一个。 public static void main(String[] args) { User user = new User(); user.setId(1);
  • 场景:使用for循环删除集合中的指定元素 定义一个list集合,并添加数据: List<String> list=new ArrayList<>(); list.add("b"); list.add("e") list.add("b"); list.add("c"); 需求:删除集合...
  • 1、改变list中某个元素的值 public class tb_SensorRecordModel { public int ID { get; set; } public decimal Value1 { get; set; } } List<tb_SensorRecordModel> list = new...
  • java如何正确的删除集合中元素

    万次阅读 2016-07-18 21:44:13
    在java如果我们需要遍历集合删除其中的某些元素时,例如对于List来说,我们有三种办法。 1. 普通的for循环遍历并删除 import java.util.*; public class RemoveSetT> { /** * 普通的for循环删除 */ ...
  • js 集合删除某个元素splice

    万次阅读 2018-02-07 15:02:37
    var list= [  { name: "tom", sex: "m", age: "22" },  { name: "jack", sex: "m", age: "18" }  ];  for (var i = 0; i ; i++) { ...向集合中添加元素用push list.push(添加);
  • 1)增加某个整型元素时,保证集合中没有重复元素删除指定的元素,查找该元素集合中 则从集合中删除元素; 2)重载运算符“+”,实现两个集合对象的合并操作,重载运算符“”,求两个集合对象的交 集;例如 ...
  • 删除list集合中特定元素的正确姿势

    千次阅读 热门讨论 2021-01-18 14:16:03
    如何删除一个集合对象的特定元素?小问题,但并不简单。 常见异常: ConcurrentModificationException java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList...
  • 如何在循环中删除List集合中元素

    千次阅读 2019-05-30 16:35:09
    一、首先是最基本的for循环 for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i); ...remove()方法删除元素后会...解决办法1、在删除某一个元素后直接break,当然这种情况只适合删...
  • java Collection集合删除某元素方法汇总

    千次阅读 多人点赞 2016-09-13 11:22:32
    集合中删除某元素同样是很常用的操作,对了,面试也总考察,面试官说要考察你的实际编程的能力,谁知道呢。下面总结了从集合中删除某元素的几种方法 package test; import java.text.MessageFormat; import...
  • Java集合如何删除某个元素 public static void main(String[] args) { List<String> strs = new ArrayList<String>(); List<String> removeStrs = new ArrayList<String>(); strs....
  • Java 删除集合中指定的元素

    千次阅读 2020-04-17 16:04:09
    使用 Collection 类的 collection.remove() 方法来删除集合中的指定的元素 完整代码 import java.util.*; public class Main { public static void main(String [] args) { System.out.println( "集合实例!\n" ...
  • 在循环遍历集合并进行删除功能的时候,要用到迭代器 ...//这里的list指某个集合 while (it.hasNext()) { E e = it.next(); if (XXX) //删除规则 it.remove(); //注意,这里要用的是迭代器的remove()方法 }
  • //使用场景:当需要使用for循环遍历删除集合中的指定元素时候 List<String> list=new ArrayList(); list.add("aaa"); list.add("aaa"); list.add("aaa"); list.add("aaa"); int count=0; for (int i=0;i();i...
  • 如何在foreach中删除一个集合中元素,其实很简单,只用一个递归就可以了,例如下面的一个代码判断一个listbox里面的items都是checkbox其中被选中的全部都删除 void removef() { foreach (CheckBox item in lst....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 246,253
精华内容 98,501
关键字:

删除集合中的某个元素