Java 中 TreeMap 和 TreeSet 之间的相似之处

javaobject oriented programmingprogramming更新于 2024/8/17 10:13:00

TreeMap 和 TreeSet 都是 Collection Framework 类的一部分。它们的实现和工作方式既有相似之处,也有不同之处。TreeMap 维护键值对,而 TreeSet 没有此功能。在本文中,我们将讨论 Collection 接口的两个类之间的相似之处。

Collection 接口

在 Java 中,collection 是一个对象,或者为了简单起见,我们可以说它是一个容器,它允许我们将多个对象分组到一个单元中。collection 接口是所有 collection 框架接口的根。

TreeMap 和 TreeSet 实现了 collection 接口的以下子接口 -

  • Map 接口 - 它将其元素存储在键值对中。 Key 是一个用于获取和接收与其关联的值的对象。

  • Set − 它是 java Collection 接口的子接口,不允许重复值。它类似于数学集合。

TreeMap

它是一个用于实现 NavigableMap 接口的类。它将地图的元素存储在树结构中。它提供了一种按排序顺序存储键值对的有效替代方法。

TreeMap 的一般语法如下 −

语法

TreeMap<TypeOfKey, TypeOfValue> nameOfMap = new TreeMap<>();

TreeSet

它是一个用于实现 NavigableSet 接口的类。它将集合的元素存储在树结构中。所有元素都以排序的方式存储,以减少检索时间。

TreeSet 的一般语法如下 -

语法

TreeSet<TypeOfSet> nameOfSet = new TreeSet<>();

TreeMap 和 TreeSet 的 Java 程序

示例 1

以下示例说明了 TreeSet 的使用。我们使用了这个类的一些内置方法。

import java.util.*;
public class Srtset {
   public static void main(String args[]) {
    // 创建树集
    TreeSet<String> treeSt = new TreeSet<>();
    // 在树集中添加元素
    treeSt.add("Tutorix");
    treeSt.add("Simply");
    treeSt.add("Easy");
    treeSt.add("Learning");
    treeSt.add("Tutorials");
    treeSt.add("Point");
    System.out.println("给定集合中的元素:" + treeSt);
    String frst = treeSt.first();
    // 访问第一个元素
    System.out.println("访问给定集合的第一个元素:" + frst);
    String end = treeSt.last();
    // 访问最后一个元素
    System.out.println("访问给定集合的最后一个元素:" + end);
    System.out.println("访问给定集合的子集:" + treeSt.subSet("Simply", "Tutorix"));
    System.out.println("访问集合的前两个元素:" + treeSt.headSet("Point"));
    System.out.println("访问集合的最后三个元素:" + treeSt.tailSet("Simply"));
   }
}

输出

给定集合中的元素:[Easy, Learning, Point, Simply, Tutorials, Tutorix]
访问给定集合的第一个元素:Easy
访问给定集合的最后一个元素:Tutorix
访问给定集合的子集:[Simply, Tutorials]
访问集合的前两个元素:[Easy, Learning]
访问集合的最后三个元素:[Simply, Tutorials, Tutorix]

示例 2

以下示例说明了 TreeMap 的实现。我们使用了这个类的一些内置方法。

import java.util.*;
public class Srt {
   public static void main(String[] args) {
    TreeMap<String, Integer> worker = new TreeMap<>();
    // 在 worker 映射中添加元素
    worker.put("Vaibhav", 4000);
    worker.put("Ansh", 3000);
    worker.put("Vivek", 1500);
    worker.put("Aman", 2000);
    worker.put("Tapas", 2500);
    // 打印 worker 映射的详细信息
    System.out.println("映射的元素:");
    for (String unKey : worker.keySet()) {
    System.out.println("Name: " + unKey + ", Salary: " + worker.get(unKey));
    }
    String frstKey = worker.firstKey();
    // 访问第一个键
    String lstKey = worker.lastKey();
    // 访问最后一个键
    System.out.println("访问 Map 中第一个键的名称:" + frstKey);
    System.out.println("访问 Map 中第一个键的名称:" + lstKey);
   }
} 

输出

Elements of the map: 
Name: Aman, Salary: 2000
Name: Ansh, Salary: 3000
Name: Tapas, Salary: 2500
Name: Vaibhav, Salary: 4000
Name: Vivek, Salary: 1500
Accessing name of first key in Map: Aman
Accessing name of first key in Map: Vivek

TreeMap 和 TreeSet 之间的相似之处

  • 默认情况下,它们的元素按自然顺序排序。例如,它们按字典顺序存储字符串,按数字顺序存储数字。

  • 由于元素已经排序,访问和检索时间变得更快。由于这一出色特性,TreeMap 和 TreeSet 经常用于存储需要快速搜索的大量信息。

  • 不允许使用空值。

  • 它们在"java.util"包内定义。

  • 两者都支持 Comparable 接口,可以实现该接口来定义自定义排序顺序。

结论

在本文中,我们学习了 Collection 框架的 Map 和 Set 接口。此外,我们还发现了用于实现上述接口的 TreeMap 和 TreeSet 类。最后,我们讨论了一些要点来解释这些类之间的相似之处。


相关文章