<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java `Iterator` > 原文: [https://beginnersbook.com/2014/06/java-iterator-with-examples/](https://beginnersbook.com/2014/06/java-iterator-with-examples/) `Iterator`用于迭代(循環)各種集合類,如[`HashMap`](https://beginnersbook.com/2013/12/hashmap-in-java-with-example/),[`ArrayList`](https://beginnersbook.com/2013/12/java-arraylist/),[`LinkedList`](https://beginnersbook.com/2013/12/linkedlist-in-java-with-example/)等。在本教程中,我們將學習什么是迭代器,如何使用它以及使用它時會出現什么問題。`Iterator`取代了`Enumeration`,它用于迭代傳統的類,如`Vector`。我們還將在本教程中看到`Iterator`和`Enumeration`之間的差異。 ## 沒有泛型示例的迭代器 泛型在 Java 5 中引入。在此之前,沒有泛型的概念。 ```java import java.util.ArrayList; import java.util.Iterator; public class IteratorDemo1 { public static void main(String args[]){ ArrayList names = new ArrayList(); names.add("Chaitanya"); names.add("Steve"); names.add("Jack"); Iterator it = names.iterator(); while(it.hasNext()) { String obj = (String)it.next(); System.out.println(obj); } } } ``` **輸出**: ```java Chaitanya Steve Jack ``` 在上面的例子中,我們在不使用泛型的情況下迭代了`ArrayList`。程序運行正常沒有任何問題,但是如果你不使用泛型可能有`ClassCastException`(我們將在下一節中看到這一點)。 **另見它們:** [如何迭代`HashMap`](https://beginnersbook.com/2013/12/how-to-loop-hashmap-in-java/ "How to loop HashMap in java") [如何迭代`LinkedList`](https://beginnersbook.com/2013/12/how-to-loop-linkedlist-in-java/) ## 具有泛型的迭代器示例 在上一節中,我們討論了`ClassCastException`。讓我們看看它是什么以及為什么當我們不使用泛型時它會發生。 ```java import java.util.ArrayList; import java.util.Iterator; public class IteratorDemo2 { public static void main(String args[]){ ArrayList names = new ArrayList(); names.add("Chaitanya"); names.add("Steve"); names.add("Jack"); //Adding Integer value to String ArrayList names.add(new Integer(10)); Iterator it = names.iterator(); while(it.hasNext()) { String obj = (String)it.next(); System.out.println(obj); } } } ``` 輸出: ```java ChaitanyaException in thread "main" Steve Jack java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at beginnersbook.com.Details.main(Details.java:18) ``` 在上面的程序中,我們嘗試將`Integer`值添加到`String`的`ArrayList`中,但是我們沒有得到任何編譯時錯誤,因為我們沒有使用泛型。但是,由于我們在`while`循環中鍵入了將整數值轉換為`String`,因此我們得到了`ClassCastException`。 **使用泛型:** 這里我們使用泛型,所以我們沒有輸入輸出轉換。如果您嘗試在下面的程序中向`ArrayList`添加一個整數值,則會出現編譯時錯誤。這樣我們就可以避免`ClassCastException`。 ```java import java.util.ArrayList; import java.util.Iterator; public class IteratorDemo3 { public static void main(String args[]){ ArrayList<String> names = new ArrayList<String>(); names.add("Chaitanya"); names.add("Steve"); names.add("Jack"); Iterator<String> it = names.iterator(); while(it.hasNext()) { String obj = it.next(); System.out.println(obj); } } } ``` 注意:我們沒有轉換輸入和`iterator`返回值[`it.next()`],因為在使用泛型時不需要它。 ## `Iterator`和枚舉之間的區別 集合上的[`Iterator`](https://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html)。`Iterator`取代了 Java 集合框架中的`Enumeration`。迭代器在兩個方面與枚舉不同: 1)迭代器允許調用者在迭代期間使用明確定義的語義從底層集合中刪除元素。 2)方法名稱已得到改進。迭代的`hashNext()`方法替換了枚舉的`hasMoreElements()`方法,同樣`next()`替換了`nextElement()`。 ## 使用`Iterator`時出現`ConcurrentModificationException` ```java import java.util.ArrayList; public class ExceptionDemo { public static void main(String args[]){ ArrayList<String> books = new ArrayList<String>(); books.add("C"); books.add("Java"); books.add("Cobol"); for(String obj : books) { System.out.println(obj); //We are adding element while iterating list books.add("C++"); } } } ``` 輸出: ```java C Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Unknown Source) at java.util.ArrayList$Itr.next(Unknown Source) at beginnersbook.com.Details.main(Details.java:12) ``` 在迭代器上使用迭代器時,我們無法添加或刪除元素。 解釋自 [Javadoc](https://docs.oracle.com/javase/6/docs/api/java/util/ConcurrentModificationException.html): 當不允許進行此類修改時,檢測到并發修改對象的方法可能拋出此異常。 例如,另一個線程迭代它時,一個線程通常不允許修改`Collection`。通常,在這些情況下,迭代的結果是不確定的。如果檢測到此行為,某些`Iterator`實現(包括 JRE 提供的所有通用集合實現的實現)可能會選擇拋出此異常。執行此操作的迭代器稱為失敗快速迭代器,因為它們快速而干凈地失敗,而不是在未來的未確定時間冒著任意的,非確定性行為的風險。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看