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

動態(tài)刪除ArrayList中的元素

開發(fā) 后端
昨天一位項目組同事需要在ArrayList中刪除所有不等于指定值的元素,但是她弄了很久,發(fā)現(xiàn)總是刪得不完全。剛好我以前做過類似的功能,就告訴她是因為ArrayList刪除元素后長度變小了,元素的索引也會跟著改變,但是迭代的下標沒有跟著相應的改變的緣故。

昨天一位項目組同事需要在ArrayList中刪除所有不等于指定值的元素,但是她弄了很久,發(fā)現(xiàn)總是刪得不完全。剛好我以前做過類似的功能,就告訴她是因為ArrayList刪除元素后長度變小了,元素的索引也會跟著改變,但是迭代的下標沒有跟著相應的改變的緣故。

將一些刪除方法做一些總結:

  1. /**  
  2.       * 刪除Arraylist中值為"c"的元素  
  3.       */ 
  4.      public static void main(String[] args) {  
  5.            
  6.          List<String> list = new ArrayList<String>();  
  7.            
  8.          //"c"在Arraylist不連續(xù)存儲  
  9.          /*  
  10.          list.add("c");  
  11.          list.add("a");  
  12.          list.add("c");  
  13.          list.add("b");  
  14.          list.add("c");  
  15.          list.add("d");  
  16.          list.add("c");  
  17.          */ 
  18.            
  19.          //"c"在Arraylist有連續(xù)存儲  
  20.          list.add("a");  
  21.          list.add("c");  
  22.          list.add("c");  
  23.          list.add("b");  
  24.          list.add("c");  
  25.          list.add("c");  
  26.          list.add("d");  
  27.          list.add("c");  
  28.            
  29.            
  30.          //刪除Arraylist中值為"c"的元素  
  31.            
  32.          //有可能不能全部刪除  
  33.          //removeListElement1(list);  
  34.            
  35.          //能夠正確刪除  
  36.          //removeListElement2(list);  
  37.            
  38.          //能夠正確刪除  
  39.          //removeListElement3(list);  
  40.      }  
  41.        
  42.        
  43.      /**  
  44.       *        刪除list中值為"c"的元素  
  45.       *   
  46.       *   這種方式:  
  47.       *     
  48.       *   當值為"c"的元素在Arraylist中不連續(xù)存儲的時候,是可以把值為"c"的元素全部刪掉  
  49.       *     
  50.       *   但是當值為"c"的元素在Arraylist中有連續(xù)存儲的時候,就沒有把值為"c"的元素全部刪除  
  51.       *   因為刪除了元素,Arraylist的長度變小了,索引也會改變,但是迭代的下標沒有跟著變小  
  52.       */ 
  53.      public static void removeListElement1(List<String> list) {  
  54.          for(int i=0;i<list.size();i++) {  
  55.              if("c".equals(list.get(i))) {  
  56.                  list.remove(i);  
  57.              }  
  58.          }  
  59.            
  60.      }  
  61.        
  62.      /**  
  63.       * 刪除Arraylist中值為"c"的元素  
  64.       *   
  65.       * 這種方式:  
  66.       *   
  67.       * 不管值為"c"的元素在Arraylist中是否連續(xù),都可以把值為"c"的元素全部刪除  
  68.       */ 
  69.      public static void removeListElement2(List<String> list) {  
  70.          for(int i=0;i<list.size();i++) {  
  71.              if("c".equals(list.get(i))) {  
  72.                  list.remove(i);  
  73.                  --i;//刪除了元素,迭代的下標也跟著改變  
  74.              }  
  75.          }  
  76.      }  
  77.        
  78.      /**  
  79.       * 刪除Arraylist中值為"c"的元素  
  80.       *   
  81.       * 這種方式:  
  82.       *   
  83.       * 不管值為"c"的元素在list中是否連續(xù),都可以把值為"c"的元素全部刪除  
  84.       *   
  85.       * 需保證沒有其他線程同時在修改  
  86.       */ 
  87.      public static void removeListElement3(List<String> list) {  
  88.          Iterator<String> iterator = list.iterator();  
  89.          while(iterator.hasNext()) {  
  90.              String str = iterator.next();  
  91.              if("c".equals(str)) {  
  92.                  iterator.remove();  
  93.              }  
  94.                
  95.          }  
  96.      } 

原文鏈接:http://www.cnblogs.com/luxh/archive/2012/05/19/2509314.html

責任編輯:林師授 來源: programmer_luxh的博客
相關推薦

2015-03-25 11:42:52

Java刪除特定元素

2015-08-04 09:18:26

JavaArrayList元素

2012-03-19 09:57:09

JavaArrayList

2024-01-05 15:06:04

元素程序員review

2022-01-07 19:50:14

元素java集合

2012-01-12 13:24:55

Java

2021-07-22 09:53:34

Vector類Java添加元素

2019-11-06 16:21:25

ArrayListLinkedListVector

2022-01-20 09:58:44

Python元素列表

2023-08-30 09:00:05

2011-05-26 14:49:53

ArrayListLinkedList

2009-11-24 18:28:44

PHP函數array_

2009-11-25 16:40:55

PHP函數array_

2024-06-03 10:07:22

Vector類元素向量

2020-12-14 08:03:52

ArrayList面試源碼

2009-11-30 18:21:21

PHP刪除數組元素

2010-09-08 17:11:29

CSS塊元素CSS內聯(lián)元素

2024-10-05 00:00:15

ArrayList性能Java

2021-07-12 11:01:15

Vector元素方法

2023-04-03 07:03:51

阿里巴巴List元素
點贊
收藏

51CTO技術棧公眾號