成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

遍歷刪除List中的元素方法

tinna / 1143人閱讀

摘要:通過進(jìn)行遍歷刪除符合條件的多個(gè)元素使用的方式也可以順利刪除和遍歷這里要使用的方法移除當(dāng)前對象,如果使用的方法,則同樣會出現(xiàn)

1.通過增強(qiáng)的for循環(huán)刪除符合條件的多個(gè)元素
/**
   * 使用增強(qiáng)的for循環(huán)
   * 在循環(huán)過程中從List中刪除元素以后,繼續(xù)循環(huán)List時(shí)會報(bào)ConcurrentModificationException
   */
  public void listRemove() {
    List students = this.getStudents();
    for (Student stu : students) {
      if (stu.getId() == 2) 
        students.remove(stu);
    }
  }
  

2.通過增強(qiáng)的for循環(huán)刪除符合條件的一個(gè)元素
/**
???* 像這種使用增強(qiáng)的for循環(huán)對List進(jìn)行遍歷刪除,但刪除之后馬上就跳出的也不會出現(xiàn)異常
???*/
??public void listRemoveBreak() {
????List students = this.getStudents();
????for (Student stu : students) {
??????if (stu.getId() == 2) {
????????students.remove(stu);
????????break;
??????}
????}
??}
??
3.通過普通的for刪除刪除符合條件的多個(gè)元素
/**
   * 這種遍歷有可能會遺漏某個(gè)元素,因?yàn)閯h除元素后List的size在
   * 變化,元素的索引也在變化,比如你循環(huán)到第2個(gè)元素的時(shí)候你把它刪了,
   * 接下來你去訪問第3個(gè)元素,實(shí)際上訪問到的是原先的第4個(gè)元素。當(dāng)訪問的元素
   * 索引超過了當(dāng)前的List的size后還會出現(xiàn)數(shù)組越界的異常,當(dāng)然這里不會出現(xiàn)這種異常,
   * 因?yàn)檫@里每遍歷一次都重新拿了一次當(dāng)前List的size。
   */
  public void listRemove2() {
    List students = this.getStudents();
    for (int i=0; i

4.通過Iterator進(jìn)行遍歷刪除符合條件的多個(gè)元素

/**
   * 使用Iterator的方式也可以順利刪除和遍歷
   */
  public void iteratorRemove() {
    List students = this.getStudents();
    System.out.println(students);
    Iterator stuIter = students.iterator();
    while (stuIter.hasNext()) {
      Student student = stuIter.next();
      if (student.getId() % 2 == 0)
//這里要使用Iterator的remove方法移除當(dāng)前對象,如果使用List的remove方法,則同樣會出現(xiàn)ConcurrentModificationException
        stuIter.remove();
    }
    System.out.println(students);
  }

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://hztianpu.com/yun/68289.html

相關(guān)文章

  • Java中如何優(yōu)雅地刪除List中的元素

    摘要:刪除元素后,立即跳出,則正常退出,但不能向后繼續(xù)循環(huán)了刪除后立馬終端循環(huán),會正常跳出,但代價(jià)是不能繼續(xù)向后循環(huán)了使用迭代器使用迭代器可,正確無誤的刪除,代碼簡潔優(yōu)雅,推薦使用使用迭代器可,正確無誤的刪除注意這里時(shí)而不是 在工作中的許多場景下,我們都會使用到List這個(gè)數(shù)據(jù)結(jié)構(gòu),那么同樣的有很多場景下需要刪除List中的某一個(gè)元素或某幾個(gè)元素,那么我們該如何正確無誤地刪除List中的元素...

    kelvinlee 評論0 收藏0
  • JavaScript數(shù)組

    摘要:與稀疏數(shù)組對立的為密集數(shù)組,密集數(shù)組的索引會被持續(xù)的創(chuàng)建,并且其元素的數(shù)量等于其長度。創(chuàng)建一個(gè)長度為的數(shù)組,并初始化了個(gè)元素使用構(gòu)造函數(shù)創(chuàng)建數(shù)組對象的時(shí)候,關(guān)鍵字是可以省略的。另外使用和刪除元素是影響數(shù)組的長度的。 說明:本文只總結(jié)了JavaScript數(shù)組在web端的行為,不包括NodeJs端的行為。本文不涉及類型化數(shù)組(TypedArray)的討論、總結(jié)。 一、什么是數(shù)組 數(shù)組的定...

    HtmlCssJs 評論0 收藏0
  • Python語法糖——遍歷列表時(shí)刪除元素

    摘要:原因是用發(fā)起任何形式的遍歷時(shí),它的遍歷順序都是從最初就確定的,而在遍歷中刪除了元素會導(dǎo)致當(dāng)前索引的變化,這樣一是會導(dǎo)致漏刪元素,二是會導(dǎo)致遍歷超過鏈表的長度。所以遍歷一個(gè)時(shí)要刪除其中的部分元素就需要其他的解決方案。 Python的for可以遍歷一個(gè)List,但是在遍歷的過程中刪除元素常常會得到意想不到的結(jié)果甚至程序出現(xiàn)異常,例如: lst = [1, 1, 0, 2, 0, 0, 8,...

    kid143 評論0 收藏0
  • 第十一章 持有對象

    摘要:允許從任一方向來遍歷對象,并在遍歷迭代過程中進(jìn)行修改該對象,還能獲得迭代器的當(dāng)前位置。這個(gè)構(gòu)造函數(shù)是將返回了一個(gè)對象給,這也是的存儲實(shí)現(xiàn)原理。 一、容器產(chǎn)生的原因   1.數(shù)組的缺點(diǎn):大小一旦給定就無法更改,除非復(fù)制到一個(gè)新的數(shù)組中,開銷大;而容器類都可以自動地調(diào)整自己的尺寸?! ?.容器功能的多樣性:容器可以實(shí)現(xiàn)各種不同要求,如按不同依據(jù)將元素進(jìn)行排序或者保證容器內(nèi)無重復(fù)元素等等。關(guān)...

    archieyang 評論0 收藏0
  • Java-集合

    摘要:對象稱作迭代器,接口方法能以迭代方式逐個(gè)訪問集合中各個(gè)元素,并可以從中除去適當(dāng)?shù)脑亍R幌嗤c(diǎn)都是迭代器,當(dāng)需要對集合中元素進(jìn)行遍歷不需要干涉其遍歷過程時(shí),這兩種迭代器都可以使用。 Collection接口 首先,看一下Collection集合的基本結(jié)構(gòu):showImg(https://segmentfault.com/img/bVDYWR?w=743&h=380); 1.Collec...

    happen 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<