“嗨,阿米戈。”

“餵,里希。”

“Ellie 告訴我你想要更多集合的例子。我會給你一些。這裡是集合和接口的列表:”

界面 類/實現 描述
列表  數組列表  列表
 鍊錶  列表
 向量  向量
 堆  堆
 放    哈希集  放
 樹集  放
 排序集  排序集
地圖  哈希表 地圖/字典
 樹圖  地圖/字典
 排序圖  排序字典
 哈希表  哈希表

“嗯,挺多的,四張榜單,三套,四張地圖。”

“對,都是List、Set、Map接口的不同實現。”

“這些實現之間有什麼區別?”

“這正是我們今天要談論的內容。請耐心等待。”

“你還有別的問題嗎?”

“我知道如何在屏幕上顯示列表。如何顯示集合或地圖?”

“List的元素有固定的順序,所以你可以用索引來顯示它們。對於Set或Map,沒有特定的順序。實際上,它們的元素順序可以隨著項目的刪除或新增而改變添加項目。”

“驚人的。”

“這就是為什麼發明了稱為迭代器的特殊對象來處理集合元素。它們使您可以遍歷集合中的所有元素,即使它們只有名稱而不是索引(Map),或者既沒有名稱也沒有索引放)。”

“這裡有些例子:”

顯示集合的元素
public static void main(String[] args)
{
    Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

     // Get an iterator for the set
     Iterator&ltString> iterator = set.iterator();

    while (iterator.hasNext())        // Check if there is another element
    {
       // Get the current element and move to the next one
       String text = iterator.next();

        System.out.println(text);
    }
}
2
任務
Java Syntax,  等級 8課堂 2
上鎖
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.
顯示列表的元素
public static void main(String[] args)
{
    List&ltString> list = new ArrayList&ltString>();
    list.add("Rain");
    list.add("In");
    list.add("Spain");

    Iterator&ltString> iterator = list.iterator();// Get an iterator for the list

    while (iterator.hasNext())      // Check if there is another element
    {
        // Get the current element and move to the next one
        String text = iterator.next();

        System.out.println(text);
    }
}
地圖的顯示元素
public static void main(String[] args)
{
    // All elements are stored in pairs
    Map<String, String> map = new HashMap<String, String>();
    map.put("first", "Rain");
    map.put("second", "In");
    map.put("third", "Spain");

    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

   while (iterator.hasNext())
    {
        // Get a key-value pair
        Map.Entry<String, String> pair = iterator.next();
        String key = pair.getKey();            // Key
        String value = pair.getValue();        // Value
        System.out.println(key + ":" + value);
    }
}

“哇。我想知道那是什麼意思。”

“其實很簡單。首先,我們從集合中得到一個特殊的對象,一個迭代器。迭代器只有兩個方法。

1. next() 方法返回集合中的下一個元素。

2. hasNext() 方法檢查是否還有未被next() 返回的元素。

“好的。我想現在越來越清楚了。讓我試著向你重複我的理解。”

“所以……首先,我們需要調用集合的 iterator() 方法來獲取這個神奇的迭代器對象。”

“然後我們一個一個地獲取元素,只要有剩餘的元素。我們通過調用 next() 獲取集合中的下一個元素,我們通過調用 hasNext() 檢查集合中是否還有元素迭代器。對嗎?

“是的,或多或少。但等待好的部分。”

“Java 有使用迭代器的簡寫符號。遵循whilefor的模式,添加了一個更特殊的語句:for each。它也使用關鍵字for表示。”

“for-each 語句僅用於處理集合和容器。它隱式地使用迭代器,但我們只能看到返回的元素。”

“讓我向您展示使用迭代器的普通方式和速記方式:”

手寫
public static void main(String[] args)
{
  Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

    Iterator&ltString> iterator = set.iterator();
  while (iterator.hasNext())
  {
    String text = iterator.next();
    System.out.println(text);
  }
}
速記
public static void main(String[] args)
{
    Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

   for (String text : set)
    {
        System.out.println(text);
    }
}

“請注意,右側部分沒有以紅色或綠色突出顯示的單詞。實際上,三行由一行代替:”

手寫
Iterator&ltString> iterator = set.iterator();
while (iterator.hasNext())
{
    String text = iterator.next();
速記
for (String text : set)

“這看起來很漂亮。我更喜歡這樣。”

“讓我們看一下上面示例的簡寫版本:”

顯示集合的元素
public static void main(String[] args)
{
    Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

    for (String text : set)
    {
        System.out.println(text);
    }
}
顯示列表的元素
public static void main(String[] args)
{
    List&ltString> list = new ArrayList&ltString>();
    list.add("Rain");
    list.add("In");
    list.add("Spain");

     for (String text : list)
    {
        System.out.println(text);
    }
}
地圖的顯示元素
public static void main(String[] args)
{
    Map<String, String> map = new HashMap<String, String>();
    map.put("first", "Rain");
    map.put("second", "In");
    map.put("third", "Spain");

    for (Map.Entry<String, String> pair : map.entrySet())
    {
        String key = pair.getKey();                      // Key
        String value = pair.getValue();                  // Value
        System.out.println(key + ":" + value);
    }
}

“現在你說!”

“我很高興你喜歡它。”