如何在Java中迭代TreeMap?


藉助AbstractMap類,Java的TreeMap實現了Map介面和NavigableMap介面。此對映使用鍵的固有順序或在建立對映時提供的Comparator進行排序。

在使用Java中的TreeMap時,目標是遍歷其元素。但是,由於TreeMap不是Collection,因此我們不能直接使用迭代器遍歷它。

使用的方法

要在Java中遍歷TreeMap,我們需要使用TreeMap.entrySet()方法。此函式返回TreeMap中儲存的所有對映的集合檢視(Set<Map.Entry>)。

可以透過使用Map.Entry介面的getKey()和getValue()函式在迭代期間訪問鍵值對。

當迴圈中需要對映的鍵和值時,此方法是典型的,也是推薦的。

TreeMap.entrySet()

要使用Java java.util.TreeMap.entrySet()方法構建與TreeMap具有相同物件的集合,可以使用Java java.util.TreeMap.entrySet()方法。它基本上返回TreeMap的集合檢視,因此我們可以以集合的形式訪問和操作TreeMap的元素。或者,我們可以建立一個新的集合並將TreeMap的元素新增到其中。

語法

tree_map.entrySet()

此方法不需要任何引數。作為返回值,該方法返回一個包含與TreeMap相同元素的集合。

可以使用Map的getKey()和getValue()方法來迭代Java中TreeMap中的鍵值對。Entry介面。當迴圈中需要對映鍵和值時,此方法常用且推薦。

getKey()

程式碼建立了一個名為“tlp”的TreeMap,並向其中添加了一些名稱/URL對。然後,它使用for-each迴圈迭代TreeMap中的條目並列印每個鍵值對。

演算法

  • 步驟1 - 建立一個名為“tlp”的TreeMap來儲存名稱/URL對。

  • 步驟2 - 使用put()方法將名稱/URL對新增到TreeMap。

  • 步驟3 - 我們使用for-each迴圈遍歷TreeMap中的條目。

  • 步驟4 - 對於每個條目,使用Map.Entry介面的getKey()和getValue()函式檢索鍵和值。

  • 步驟5 - 使用System.out.println()函式列印鍵值對。

示例

// Java program to iterate over a TreeMap

import java.util.Map;
import java.util.TreeMap;

public class IterationExamplebyTLP {
   public static void main(String[] arg){
      Map<String, String> tlp
         = new TreeMap<String, String>();

      // enter name/url pair
      tlp.put("TLP", "tutorialspoint.com");
      tlp.put("Guide", "guide.tutorialspoint.com");
      tlp.put("For", "for.tutorialspoint.com");
      tlp.put("Students", "www.tutorialspoint.com");

      for (Map.Entry<String, String>
      entry : tlp.entrySet())
      System.out.println( "[" + entry.getKey() + ", " + entry.getValue() + "]");
   }
}

輸出

[For, for.tutorialspoint.com]
[Guide, guide.tutorialspoint.com]
[Students, www.tutorialspoint.com]
[TLP, tutorialspoint.com]

entrySet()

程式碼建立一個TreeMap物件,並向其中新增3個鍵值對。然後,它使用三種不同的方法迭代TreeMap中的條目:for-each迴圈、forEach()方法和迭代器。三種方法的程式碼輸出相同。

演算法

  • 步驟1 - 建立一個名為“tm”的TreeMap物件來儲存整數和字串的鍵值對。

  • 步驟2 - 使用put()方法向TreeMap新增一些鍵值對。

  • 步驟3 - 使用entrySet()方法從TreeMap獲取條目的集合。

  • 步驟4 - 使用for-each迴圈遍歷條目,列印每個鍵值對。

  • 步驟5 - 列印一個空行。

  • 步驟6 - 在條目集合上使用forEach()方法再次遍歷條目,列印每個鍵值對。

  • 步驟7 - 列印一個空行。

  • 步驟8 - 使用iterator()方法為條目集合建立一個迭代器。

  • 步驟9 - 初始化一個名為“entry”的Map.Entry物件來儲存當前條目。

  • 步驟10 - 必須使用while迴圈使用迭代器遍歷條目。

  • 步驟11 - 在迴圈中,從entry物件檢索鍵和值。然後列印它們。

  • 步驟12 - 迴圈持續進行,直到沒有更多條目。

  • 步驟13 - 程式輸出TreeMap中的鍵值對。

示例

// Java Program to Traverse Over Entries in a TreeMap

import java.util.*;

public class TLP {

   // Main driver method
   public static void main(String[] args){

      TreeMap<Integer, String> tm
      = new TreeMap<Integer, String>();

      tm.put(1, "Tutorialspoint");
      tm.put(2, "Code");
      tm.put(3, "Guide");

      Set<Map.Entry<Integer, String> > entries
      = tm.entrySet();

      for (Map.Entry<Integer, String> entry : entries) {
         System.out.println(entry.getKey() + "=" + entry.getValue());
      }

      System.out.println();

      entries.forEach(entry -> {
         System.out.println(entry.getKey() + "=" + entry.getValue());
      });

      System.out.println();

      Iterator<Map.Entry<Integer, String> > iterator
         = entries.iterator();

      Map.Entry<Integer, String> entry = null;

      while (iterator.hasNext()) {
         entry = iterator.next();
         System.out.println(entry.getKey() + "=" + entry.getValue());
      }
   }
}

輸出

1=Tutorialspoint
2=Code
3=Guide

1=Tutorialspoint
2=Code
3=Guide

1=Tutorialspoint
2=Code
3=Guide

結論

關於在Java中迭代TreeMap,有一些關鍵方法需要記住。TreeMap類實現了Map介面和NavigableMap介面,允許根據鍵或提供的Comparator進行排序。

但是,我們必須使用TreeMap,因為它不是Collection。要遍歷其元素,請使用entrySet()方法。我們可以透過使用Map.Entry介面的getKey()和getValue()方法在迭代期間獲取鍵值對。

更新於:2023年10月18日

2K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告