java集合类arraylist循环中删除特定元素的方法_java

在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素。

一种错误的方式:

<pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){ 

 if(list.get(i)==XXX){ 

    list.remove(i); 

 } 

}

 上面这种方式会抛出如下异常:

 

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
  at java.util.ArrayList.RangeCheck(Unknown Source)
  at java.util.ArrayList.get(Unknown Source)
  at ListDemo.main(ListDemo.java:20) 

 因为你删除了元素,但是未改变迭代的下标,这样当迭代到最后一个的时候就会抛异常咯。

可以对上面的程序进行如下改进:

for(int i = 0 , len= list.size();i<len;++i){ 

 if(list.get(i)==XXX){ 

    list.remove(i);
    --len;//减少一个
 } 

}

上面的代码就正确了。

下面我们再介绍一种方案:

List接口内部实现了Iterator接口,提供开发者一个iterator()得到当前list对象的一个iterator对象。

Iterator<String> sListIterator = list.iterator();
while(sListIterator.hasNext()){
  String e = sListIterator.next();
  if(e.equals("3")){
  sListIterator.remove();
  }
}

上面这种也是正确的,并推荐使用第二种方案。

两种方案实现原理都差多的,第二种只是jdk封装了下。

查看ArrayList源码会发现很多方法内部都是基于iterator接口实现的,所以推荐使用第二种方案。

以上就是小编为大家带来的java集合类arraylist循环中删除特定元素的方法全部内容了,希望大家多多支持~

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java集合arraylist
集合循环添加元素、arraylist集合排序、arraylist集合、java集合arraylist、arraylist是集合吗,以便于您获取更多的相关知识。

时间: 2024-10-30 11:12:25

java集合类arraylist循环中删除特定元素的方法_java的相关文章

Java集合类ArrayList循环中删除特定元素

在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素.本文将讲解Java集合类ArrayList循环中删除特定的元素.   在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: [java] view plaincopy for(int i = 0 , len= list.size();i<len;++i){     if(list.get(i)==XXX){          list.remove(i);     }   }   上面这

Java ArrayList删除特定元素的方法

ArrayList是最常用的一种java集合,在开发中我们常常需要从ArrayList中删除特定元素.有几种常用的方法: 最朴实的方法,使用下标的方式: ArrayList al = new ArrayList();    al.add("a");    al.add("b");    //al.add("b");    //al.add("c");    //al.add("d");    for (in

2种Java删除ArrayList中的重复元素的方法_java

这篇文章将给出两种从ArrayList中删除重复元素的方法,分别是使用HashSet和LinkedHashSet. ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必须从已建成的ArrayList中删除重复元素的要求. 方法1:使用HashSet删除ArrayList中重复的元素 在该方法中,我们使用HashSet来删除重复的元素.如你所知,HashSet不允许有重复的元素.我们使用HashSet的这

Java数组,去掉重复值、增加、删除数组元素的方法_java

如下所示: import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; public class lzwCode { public static void main(String [] args) { testA(); System.out.println("==========================="); testB(); System

简单说明Java的Struts框架中merge标签的使用方法_java

merge标签合并标记需要两个或两个以上的列表作为参数,并把它们合并在一起,如下所示: <s:merge var="myMergedIterator"> <s:param value="%{myList1}" /> <s:param value="%{myList2}" /> <s:param value="%{myList3}" /> </s:merge> <

数组任意位置插入元素,删除特定元素的实例

如下所示: $ary = array( array('t'=>1,'y'=>2), array('t'=>2,'y'=>9) ); $t = array_splice( $ary, 1,0,array(array('t'=>3,'y'=>10)) ); print_r($ary); 控制台输出: $ary = array( array('t'=>1,'y'=>2), array('t'=>3,'y'=>10), array('t'=>2,'

用java打印出数组中不同的元素,比如int[] a=new[]{2,4,5,6,3}和int[] b=new[]{1,4,8,6,9}哪位大侠能帮我!急!

问题描述 用java打印出数组中不同的元素,比如int[]a=new[]{2,4,5,6,3}和int[]b=new[]{1,4,8,6,9}/*结果输出1,8,9**/ 解决方案 解决方案二:publicclassTest{publicstaticvoidmain(String[]args){intnumA[]={2,4,5,6,3};intnumB[]={1,4,8,6,9};LinkedList<Integer>difNumList=newLinkedList<Integer>

JS实现添加,替换,删除节点元素的方法_javascript技巧

本文实例讲述了JS实现添加,替换,删除节点元素的方法.分享给大家供大家参考,具体如下: 一直以来,对于节点操作比较纠结,特别是插入到某某节点之后.居然没有这个方法,以前的我写的方法有问题,是把新节点插入到旧节点的里面去了,还是该用insertBefore方法可以实现 下面是方法: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose

php 删除数组元素一些方法总结

实例一  代码如下 复制代码 //删除数组中的一个元素 function array_remove_value(&$arr, $var){ foreach ($arr as $key => $value) { if (is_array($value)) { array_remove_value($arr[$key], $var); } else { $value = trim($value); if ($value == $var) { unset($arr[$key]); } else {