如何在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+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告