如何在 Java 中迭代一个 TreeMap?

原文:https://www . geeksforgeeks . org/如何迭代 java 中的树图/

给定一个树形图,任务是用 Java 迭代这个树形图。Java 中的 TreeMap 与抽象类一起实现地图界面导航地图。我们不能直接使用迭代器迭代树图,因为树图不是集合。所以我们将不得不使用 TreeMap.entrySet()方法。该方法返回一个集合视图(设置<地图)。条目>)中包含的映射。因此,我们可以使用 Map.Entry 的 getKey()和 getValue()方法迭代键值对。这种方法是最常见的,如果您在循环中需要映射键和值,应该使用这种方法。

例 1:

Java 语言(一种计算机语言,尤用于创建网站)

// Java program to iterate over a TreeMap

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

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

        // enter name/url pair
        gfg.put("GFG", "geeksforgeeks.org");
        gfg.put("Practice", "practice.geeksforgeeks.org");
        gfg.put("Code", "code.geeksforgeeks.org");
        gfg.put("Quiz", "quiz.geeksforgeeks.org");

        // using for-each loop for
        // iteration over TreeMap.entrySet()
        for (Map.Entry<String, String>
                 entry : gfg.entrySet())
            System.out.println(
                "[" + entry.getKey()
                + ", " + entry.getValue() + "]");
    }
}

Output: 

[Code, code.geeksforgeeks.org]
[GFG, geeksforgeeks.org]
[Practice, practice.geeksforgeeks.org]
[Quiz, quiz.geeksforgeeks.org]

现在让我们来看看遍历 TreeMap 对象中的条目。为了实现,我们正在考虑非常简单的映射元素关联性,其中我们有三个元素说它们是“极客”、“for”、“极客”,并且是整数类型的键值“1”、“2”和“3”。因此,只有这样我们才能得到我们需要制作一个树形图类的对象。

例 2:

Java 语言(一种计算机语言,尤用于创建网站)

// Java Program to Iterate Over Entries in a TreeMap

import java.util.*;

// Importing required
// Main class
class GFG {

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

        // Creating a TreeMap class object
        // Objects are of key-value pairs (integer and
        // string type)
        TreeMap<Integer, String> tm
            = new TreeMap<Integer, String>();

        // Customly adding elements
        tm.put(1, "Geeks");
        tm.put(2, "For");
        tm.put(3, "Geeks");

        //  Get all entries using the entrySet() method
        Set<Map.Entry<Integer, String> > entries
            = tm.entrySet();

        // Way 1
        // Using for loops
        for (Map.Entry<Integer, String> entry : entries) {
            System.out.println(entry.getKey() + "->"
                               + entry.getValue());
        }

        // New line to differenciate differences in output
        // between for loop and for each loop
        System.out.println();

        // Way 2 - getting code shorter and simpler
        // For each loops

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

        // New line to differenciate differences in output
        // between for each loop and iterator traversal
        System.out.println();

        // Way 3 - New way to
        // Getting an iterator
        Iterator<Map.Entry<Integer, String> > iterator
            = entries.iterator();

        // Additional step here
        // To Initialize object holding for
        // key-value pairs to null
        Map.Entry<Integer, String> entry = null;

        // Holds true till there is no element remaining in
        // the object using hasNExt() method
        while (iterator.hasNext()) {

            // Moving onto next pairs using next() method
            entry = iterator.next();

            // Printing the key-value pairs
            // using getKet() and getValue() methods
            System.out.println(entry.getKey() + "->"
                               + entry.getValue());
        }
    }
}

Output

1->Geeks
2->For
3->Geeks

1->Geeks
2->For
3->Geeks

1->Geeks
2->For
3->Geeks