如何在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()方法在迭代期間獲取鍵值對。