自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java集合類ArrayList循環(huán)中刪除特定元素

開發(fā) 后端
在項(xiàng)目開發(fā)中,我們可能往往需要?jiǎng)討B(tài)的刪除ArrayList中的一些元素。本文將講解Java集合類ArrayList循環(huán)中刪除特定的元素。

在項(xiàng)目開發(fā)中,我們可能往往需要?jiǎng)討B(tài)的刪除ArrayList中的一些元素。

一種錯(cuò)誤的方式:

  1. <pre name="code" class="java">for(int i = 0 , len= list.size();i<len;++i){  
  2.  
  3.   if(list.get(i)==XXX){  
  4.  
  5.        list.remove(i);  
  6.  
  7.   }  
  8.  

上面這種方式會(huì)拋出如下異常:

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

因?yàn)槟銊h除了元素,但是未改變迭代的下標(biāo),這樣當(dāng)?shù)阶詈笠粋€(gè)的時(shí)候就會(huì)拋異???。

可以對(duì)上面的程序進(jìn)行如下改進(jìn):

  1. for(int i = 0 , len= list.size();i<len;++i){  
  2.  
  3.   if(list.get(i)==XXX){  
  4.  
  5.        list.remove(i);  
  6.        --len;//減少一個(gè)  
  7.   }  
  8.  

上面的代碼就正確了。

下面我們?cè)俳榻B一種方案:

List接口內(nèi)部實(shí)現(xiàn)了Iterator接口,提供開發(fā)者一個(gè)iterator()得到當(dāng)前l(fā)ist對(duì)象的一個(gè)iterator對(duì)象。

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

上面這種也是正確的,并推薦使用第二種方案。

兩種方案實(shí)現(xiàn)原理都差多的,第二種只是jdk封裝了下。

查看ArrayList源碼會(huì)發(fā)現(xiàn)很多方法內(nèi)部都是基于iterator接口實(shí)現(xiàn)的,所以推薦使用第二種方案。

原文鏈接:http://blog.csdn.net/lazy_p/article/details/7365324

【編輯推薦】

  1. Java集合框架總結(jié):Set接口的使用
  2. Java的位移運(yùn)算巧方法
  3. Java7的一個(gè)新類JLayer:裝飾的Swing組件
  4. 關(guān)于Java中內(nèi)存溢出的解決辦法
  5. Java中的面向?qū)ο筇匦?/a>
責(zé)任編輯:林師授 來源: lazy_p的博客
相關(guān)推薦

2015-03-25 11:42:52

Java刪除特定元素

2012-05-29 15:29:14

JavaArrayList

2015-08-04 09:18:26

JavaArrayList元素

2024-02-22 08:59:41

JavaArrayListLinkedList

2010-09-09 16:26:51

SQL循環(huán)For

2024-01-05 15:06:04

元素程序員review

2022-01-07 19:50:14

元素java集合

2012-02-22 14:14:43

Java

2009-09-04 09:15:41

Java集合類

2023-07-26 07:15:13

HashMapArrayListLinkedList

2024-06-03 10:07:22

Vector類元素向量

2024-11-08 16:54:38

2021-07-08 10:00:59

LinkedLis集合定義

2024-11-25 07:00:00

2021-07-12 11:01:15

Vector元素方法

2021-07-22 09:53:34

Vector類Java添加元素

2025-02-10 07:40:00

Java集合工具類編程

2009-12-22 16:50:44

ADO.NET元素

2019-07-22 09:59:20

Java框架集合

2009-12-21 15:33:07

WCF集合元素
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)