如何在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()方法在迭代期间获取键值对。