亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java中List刪除時(shí)需要的注意事項(xiàng)

 更新時(shí)間:2017年01月17日 15:51:42   作者:張飛_  
最近在利用java中的LIST在刪除時(shí)發(fā)現(xiàn)了一個(gè)錯(cuò)我,通過查找相關(guān)的資料終于解決了,覺著有必要分享處理給同樣遇到這個(gè)問題的朋友參考,下面這篇文章主要介紹了java中List刪除時(shí)需要的注意事項(xiàng),需要的朋友可以一起來看看吧。

java中的LIST在刪除時(shí),一般會(huì)用list.remove(o); 但這樣往往會(huì)出現(xiàn)問題,先來看下面的這段代碼:

package com.demo;
 
import java.util.ArrayList;
import java.util.List;
 
public class Test11 {
   
  public void delete(){
    List<Integer> list = new ArrayList<Integer>();
    list.add(1);
    list.add(2);
    list.add(2);
    list.add(3);
    for (int i = 0; i < list.size(); i++) {
      if(list.get(i)==2){
        list.remove(i);
      }
    }
    this.outputList(list);
  }
   
  private void outputList(List<Integer> list){
    for (Integer i : list) {
      System.out.println(i);
    }
  }
 
  public static void main(String[] args) {
    Test11 t = new Test11();
    t.delete();
     
  }
 
}

返回結(jié)果是:

1

2

3

這結(jié)果顯然不是我們的預(yù)期,我們是希望刪除List中所有為2的元素,但輸出結(jié)果中卻出現(xiàn)了2,這是因?yàn)樵趇等于1時(shí),刪除了List中的index為1的元素2,這時(shí)候list為[1,2,3], 但接下來,i遞增后,等于2,在list.get(i)時(shí),取出來的結(jié)果就成為了3了,也就是說隨著list元素的刪除,index是隨之變化的,這就是其中的陷阱,于是,我們得尋找一個(gè)在刪除時(shí),索引不發(fā)生變化的迭代方式來刪除,而iterator是被創(chuàng)建之后會(huì)建立一個(gè)指向原來對(duì)象的單鏈索引表,當(dāng)原來的對(duì)象數(shù)量發(fā)生變化時(shí),這個(gè)索引表的內(nèi)容不會(huì)同步改變,也就是用cursor來維護(hù)這個(gè)索引表,于是,可以這樣來刪除:

package com.demo;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
public class Test11 {
   
  public void delete(){
    List<Integer> list = new ArrayList<Integer>();
    list.add(1);
    list.add(2);
    list.add(2);
    list.add(3);
    this.iteratorDelete(list.iterator(), 2);
    this.outputList(list);
  }
   
  private void iteratorDelete(Iterator<Integer> it, int deleteObject){
    while(it.hasNext()){
      int i = it.next();
      if(i==deleteObject){
        it.remove();
      }
    }
  }
   
  private void outputList(List<Integer> list){
    for (Integer i : list) {
      System.out.println(i);
    }
  }
 
  public static void main(String[] args) {
    Test11 t = new Test11();
    t.delete();
     
  }
 
}

 這個(gè)代碼結(jié)果就是正確的了!

可能有人會(huì)說,我是在iterator中刪除的,為什么list的值會(huì)發(fā)生改變?這個(gè)問題,自已思考去吧!思考不出來,可以轉(zhuǎn)行了!

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • java中的interface接口實(shí)例詳解

    java中的interface接口實(shí)例詳解

    這篇文章主要介紹了 java中的interface接口實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Mybatis整合達(dá)夢(mèng)數(shù)據(jù)庫的完整步驟記錄

    Mybatis整合達(dá)夢(mèng)數(shù)據(jù)庫的完整步驟記錄

    作為國產(chǎn)數(shù)據(jù)庫,達(dá)夢(mèng)做的不錯(cuò),提供的遷移工具也相當(dāng)不錯(cuò),下面這篇文章主要給大家介紹了關(guān)于Mybatis整合達(dá)夢(mèng)數(shù)據(jù)庫的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 輕松掌握J(rèn)ava模板模式

    輕松掌握J(rèn)ava模板模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava模板模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java web網(wǎng)站訪問量的統(tǒng)計(jì)

    Java web網(wǎng)站訪問量的統(tǒng)計(jì)

    這篇文章主要為大家詳細(xì)介紹了Java web網(wǎng)站訪問量的統(tǒng)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java中的private修飾符失效了?

    Java中的private修飾符失效了?

    這篇文章主要介紹了Java中的private修飾符失效了?本文討論在一個(gè)內(nèi)部類里面可以訪問外部類的private成員變量或者方法的一種現(xiàn)象,需要的朋友可以參考下
    2015-01-01
  • JPA?使用criteria簡(jiǎn)單查詢工具類方式

    JPA?使用criteria簡(jiǎn)單查詢工具類方式

    這篇文章主要介紹了JPA?使用criteria簡(jiǎn)單查詢工具類方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java中的內(nèi)部類內(nèi)部接口用法說明

    java中的內(nèi)部類內(nèi)部接口用法說明

    這篇文章主要介紹了java中的內(nèi)部類內(nèi)部接口用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 在Spring Data JPA中引入Querydsl的實(shí)現(xiàn)方式

    在Spring Data JPA中引入Querydsl的實(shí)現(xiàn)方式

    這篇文章主要介紹了在Spring Data JPA中引入Querydsl的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法

    java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法

    這篇文章主要介紹了java9的JShell小工具和編譯器兩種自動(dòng)優(yōu)化方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • java集合中l(wèi)ist的用法代碼示例

    java集合中l(wèi)ist的用法代碼示例

    這篇文章主要介紹了java集合中l(wèi)ist的用法代碼示例,分享了相關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論