Java 中 TreeMap 和 TreeSet 之间的相似之处
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 类。最后,我们讨论了一些要点来解释这些类之间的相似之处。