如何在 Java 中迭代 TreeMap?
借助 AbstractMap 类,Java 的 TreeMap 实现了 Map 接口和 NavigableMap。此映射使用键的固有顺序或创建映射时提供的 Comparator 进行排序。
在 Java 中使用 TreeMap 时,目标是迭代其元素。但是,由于 TreeMap 不是集合,因此我们无法直接使用迭代器对其进行迭代。
使用的方法
要在 Java 中迭代 TreeMap,我们需要利用 TreeMap.entrySet() 方法。此函数返回 TreeMap 中保存的所有映射的集合视图 (SetMap.Entry>)。
可以使用 Map.Entry 接口的 getKey() 和 getValue() 函数在迭代过程中访问键值对。
这种方法很典型,建议在循环中需要映射的键和值时使用。
TreeMap.entrySet()
要构建与 TreeMap 具有相同对象的集合,请使用 Java java.util.TreeMap.entrySet() 方法。我们可以以集合格式访问和使用 TreeMap 的元素,因为它基本上返回 TreeMap 的集合视图。作为替代方案,我们可以创建一个新的集合并将 TreeMap 的组件添加到其中。
语法
tree_map.entrySet()
此技术不需要任何参数。作为返回值,该方法返回一个包含与 TreeMap 相同组件的集合。
Map 的 getKey() 和 getValue() 方法可用于反复迭代 Java.interface for entry 中 TreeMap 中的键值对。当循环中需要映射键和值时,经常使用并建议使用此方法。
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 程序用于迭代 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>(); // 输入名称/url 对 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 个键值对。然后,它使用 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 - 在循环中,从条目对象中检索键和值。之后,打印它们。
步骤 12 - 循环继续进行,直到没有更多条目。
步骤 13 - 程序输出 TreeMap 中的键值对。
示例
// Java 程序遍历 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() 方法在迭代过程中获取键值对。