java.util.List的remove()方法使用技巧

转载 2016年05月31日 17:55:24
List list;//初始化就不写了
for(int i=list.size()-1;i>=0;i--){
  list.remove(i);
}


一.list.remove(i)

public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(3);
    list.add(4);
         
    for (int i=0; i<list.size(); i++) {
        if (list.get(i) == 3) {
            list.remove(i);//这样写不对,需要写成list.remove(i--) 
        }
    }
         
    System.out.println(list);
}


如果要遍历list进行过滤,比如过滤掉值为3的对象。本以为这代码再简单不过,可还是掉坑里了,上面的代码这样写的话,元素3是过滤不完的。只要list中有相邻2个相同的就过滤不完List调用remove(index)方法后,会移除index位置上的元素,index之后的元素就全部依次左移,即索引依次-1要保证能操作所有的数据,需要把index-1,否则原来索引为index+1的元素就无法遍历到(因为原来索引为index+1的数据,在执行移除操作后,索引变成index了,如果没有index-1的操作,就不会遍历到该元素,而是遍历该元素的下一个元素)。

同样,Map通过keySet()或entrySet()遍历时,不能删除里面的元素,否则会报java.util.ConcurrentModificationException

为了避免出现以上情况,需要对List或Map进行遍历且要进行删除操作时一定要使用迭代器Iterator,通过iterator.remove()来删除。

二.建议使用iterator.remove方法


if (null != list && list.size() > 0) {
    Iterator it = list.iterator();  
    while(it.hasNext()){
        Student stu = (Student)it.next(); 
        if (stu.getStudentId() == studentId) {
            it.remove(); //移除该对象
        }
    }
}


相关文章推荐

Java编程:删除 List 元素的三种正确方法

删除 List 中的元素会产生两个问题: 删除元素后 List 的元素数量会发生变化; 对 List 进行删除操作可能会产生并发问题; 我们通过代码示例演示正确的删除逻辑package com.ips...
  • claram
  • claram
  • 2016年11月30日 16:44
  • 10813

如何从List集合中删除对象

这个问题看似好像挺简单挺幼稚的,然而就这个幼稚的问题还曾经困扰过我一阵呢,其实犯这个错误的根本原因是我们对于基础知识的理解和掌握上还有不足的表现,基本功有些人总是觉得不重要,认为更多的扩大学习的广度才...

Java list.remove( )方法需要注意的两个地方

list.remove最近做项目的过程中,需要用到list.remove()方法,结果发现两个有趣的坑,经过分析后找到原因,记录一下跟大家分享一下。代码直接上一段代码,进行分析。public clas...

java list如何remove

在java中对list进行操作很频繁,特别是进行list启遍历,这些操作我们都会,也很熟悉,但是对java中list进行删除元素,remove list中的元素就不怎么熟悉了吧,可以说很陌生,是实际操...

Java中List的remove方法

今天被问到一个问题: NumberList是一个存储数字的容器,以下代码执行后容器中的数字是什么? List numberlist = new ArrayList(5);numberli...

Java中list的remove方法移除的对象与下标重合了呢?

今天被ListView中各种数据状态改变搞得烦心时突然想到list的remove方法移除的对象与下标重合了会发生发生?举个例子就是arraylist中add 1 2 3 4,这时候list.remov...

Java 集合之List 集合的删除方法顺序分析以及remove和removeAll区别

接下来看 remove()方法 public class TestList { public static void main(String args[]) { // 结果: Hello ...

JAVA中LISt遍历时如何remove元素

public class RemoveElementDemo { public static void main(String[] args) { List list = ne...

Java中List集合里Contains和Remove方法的本质

一、课题的来源、研究的目的意义(包括在我国应用的前景)、国内外研究现状及水平。 无线传感器网络(Wireless Sensor Network,WSN)是一种大规模、自组织、无线多跳、以数据为中心的无...

Java list.remove( )方法需要注意的两个地方

public class Main { public static void main(String[] args) { List stringList = new Arra...
  • anmoyyh
  • anmoyyh
  • 2017年07月24日 14:03
  • 301
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java.util.List的remove()方法使用技巧
举报原因:
原因补充:

(最多只允许输入30个字)