介绍
Java 中的 TreeMap
类是 Java 集合框架的一部分,并实现了 Map
接口。与其他 Map
实现不同,它以排序的方式存储键值对。在本实验中,你将学习如何在 Java 程序中有效地使用 TreeMap
类。
Java 中的 TreeMap
类是 Java 集合框架的一部分,并实现了 Map
接口。与其他 Map
实现不同,它以排序的方式存储键值对。在本实验中,你将学习如何在 Java 程序中有效地使用 TreeMap
类。
~/project
目录下创建一个名为 TreeMapDemo.java
的新文件。import java.util.Map;
import java.util.TreeMap;
Map<Integer, String> map = new TreeMap<>();
put()
方法向 TreeMap 中添加元素:map.put(1, "John");
map.put(2, "Mary");
map.put(3, "Peter");
将这些代码添加到 main
方法中。
for(Map.Entry<Integer, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
Employee
的新类:class Employee implements Comparable<Employee> {
private int id;
private String name;
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public int compareTo(Employee e) {
return this.id - e.getId();
}
}
Map<Employee, String> employeeMap = new TreeMap<>();
employeeMap.put(new Employee(3, "John"), "IT");
employeeMap.put(new Employee(2, "Mary"), "HR");
employeeMap.put(new Employee(1, "Peter"), "Finance");
for(Map.Entry<Employee, String> entry : employeeMap.entrySet()) {
System.out.println(entry.getKey().getId() + " "
+ entry.getKey().getName() + " "
+ entry.getValue());
}
TreeMapDemo
类中定义一个自定义的 Comparator:class DescendingOrder implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
}
Map<Integer, String> treeMap = new TreeMap<>(new DescendingOrder());
treeMap.put(1, "John");
treeMap.put(4, "Mary");
treeMap.put(2, "Peter");
for(Map.Entry<Integer, String> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
get()
方法访问特定元素:String name = map.get(1);
System.out.println("Name is " + name);
remove()
方法删除特定元素:String removedName = map.remove(2);
System.out.println("Removed: " + removedName);
size()
方法获取 TreeMap 中元素的数量:int size = map.size();
System.out.println(size);
firstKey()
和 lastKey()
方法获取 TreeMap 中的第一个和最后一个元素:int firstKey = map.firstKey();
int lastKey = map.lastKey();
subMap()
方法获取范围内的元素:Map<Integer, String> rangeMap = map.subMap(1, 3);
for(Map.Entry<Integer, String> entry : rangeMap.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
~/project
目录。javac
命令编译 TreeMapDemo.java
文件:javac TreeMapDemo.java
java
命令运行程序:java TreeMapDemo
在本实验中,你学习了 Java 中的 TreeMap 类以及如何有效地在程序中使用它。你学习了如何创建 TreeMap、添加和删除元素,以及根据特定条件检索元素。你还学习了如何使用 Comparator 自定义排序顺序。TreeMap 类为键值对的排序和存储提供了极大的灵活性和控制能力。