如何在 Java 中以相反的顺序创建 TreeMap?
在本文中,我们将学习如何在 Java 中以相反的顺序创建 TreeMap。首先,我们需要了解 TreeMap。Java 中的 TreeMap 是一个实现 SortedMap 接口的类,该接口扩展了 Map 接口。它是一个存储键值对的集合,并根据其自然顺序或创建期间提供的自定义比较器对其进行组织。
这种方法为常见操作(例如从 TreeMap 中添加、删除和检索元素)提供了 高效的性能。它的平均时间复杂度为O(log n),可确保高效执行。
创建 TreeMap 的语法
TreeMap(Map<? extends K,? extends V> m)
此方法用于通过从"m"添加条目来初始化 TreeMap。条目将根据键的自然顺序进行排序。
方法
TreeMap 的默认行为是根据键按升序对其元素进行排序。但是,通过使用 Java 中的 Collections.reverseOrder() 方法,我们可以创建一个 TreeMap,以 反向顺序 维护元素,从而允许我们根据键以降序显示它们。
Collections.reverseOrder()
reverseOrder() 方法返回一个 Comparator,可用于根据给定的 Comparator 对集合或列表进行反向排序。此方法允许我们使用自定义比较器轻松地按降序排列元素。
语法
public static Comparator reverseOrder()
输入
tm.put("1", "Welcome");
tm.put("2", "to");
tm.put("3", "the");
tm.put("4", "Tutorials");
tm.put("5", "Point");
输出
// 目标是按照插入时的相反顺序打印元素 5: Point 4: Tutorials 3: the 2: to 1: Welcome
示例
//以下代码演示如何在 Java 中以相反的顺序遍历 TreeMap。
import java.util.*;
public class Testing {
public static void main(String args[]){
//创建树形图
Map<String, String> tm =
new TreeMap<String, String>(Collections.reverseOrder());
// 使用 put() 方法将元素插入树形图
tm.put("1", "Welcome");
tm.put("2", "to");
tm.put("3", "the");
tm.put("4", "Tutorials");
tm.put("5", "Point");
// 遍历并打印图中的元素
for(Map.Entry<String,String> me: tm.entrySet()){
System.out.println(me.getKey() + " : " + me.getValue());
}
}
}
输出
5 : Point 4 : Tutorials 3 : the 2 : to 1 : Welcome
示例中的元素根据其键以相反的顺序显示。
在此示例中,我们创建一个名为 Person 的类,它包含两个属性,如名称和年龄。在这里,我们将创建一个 TreeMap,其键为 Integer,值将是 Person 对象,并以相反的顺序显示它们。
输入
treeMap.put(1, new Person("Hari", 25));
treeMap.put(2, new Person("Revanth", 30));
treeMap.put(3, new Person("Mohan", 35));
t
输出
David (40 years old) => Key: 4 Charlie (35 years old) => Key: 3 Bob (30 years old) => Key: 2 Alice (25 years old) => Key: 1
下面的程序帮助我们以相反的顺序遍历上述示例的 TreeMap −
示例
//下面的代码片段说明了如何使用 Java 以相反的顺序遍历 TreeMap。
import java.util.*;
class PersonDetails {
private String person_name;
private int person_age;
public PersonDetails(String name, int age) {
this.person_name = name;
this.person_age = age;
}
public String getName() {
return person_name;
}
public int getAge() {
return person_age;
}
@Override
public String toString() {
return person_name + " (" + person_age + " years old)";
}
}
public class Testing {
public static void main(String[] args) {
// 创建一个 TreeMap,以 Integer 为 Key,以 Person(Name,age) 为 value
TreeMap<Integer, PersonDetails> tm = new TreeMap<>(Collections.reverseOrder());
// 使用 put() 方法将元素插入到树形图中
tm.put(1, new PersonDetails("Alice", 25));
tm.put(2, new PersonDetails("Bob", 30));
tm.put(3, new PersonDetails("Charlie", 35));
tm.put(4, new PersonDetails("David", 40));
// 遍历并打印 map 中的元素
for (Map.Entry<Integer, PersonDetails> me : tm.entrySet()) {
System.out.println(me.getValue() + " => Key: " + me.getKey());
}
}
}
输出
David (40 years old) => Key: 4 Charlie (35 years old) => Key: 3 Bob (30 years old) => Key: 2 Alice (25 years old) => Key: 1
在此示例中,我们创建一个名为 Product 的类,它由两个属性组成,如 name 和 price。这里我们将创建一个 TreeMap,其键为 product_name,值是 product_price,并以相反的顺序显示它们。
输入
tm.put("Product A", 9.99);
tm.put("Product B", 5.99);
tm.put("Product C", 12.49);
tm.put("Product D", 7.99);
tm.put("Product E", 3.99);
输出
Product E => $3.99 Product D => $7.99 Product C => $12.49 Product B => $5.99 Product A => $9.99
示例
//下面的代码片段说明了如何使用 Java 以相反的顺序遍历 TreeMap。
import java.util.*;
class ProductDetails {
private String product_name;
private double product_price;
public ProductDetails(String name, double price) {
this.product_name = name;
this.product_price = price;
}
public String getName() {
return product_name;
}
public double getPrice() {
return product_price;
}
@Override
public String toString() {
return product_name + " ($" + product_price + ")";
}
}
public class Testing {
public static void main(String[] args) {
// 创建一个 TreeMap,其键为 product_name,值是 product_price
TreeMap<String, Double> tm= new TreeMap<>(Collections.reverseOrder());
// 使用 put() 方法将元素插入到树形图中
tm.put("Product A", 9.99);
tm.put("Product B", 5.99);
tm.put("Product C", 12.49);
tm.put("Product D", 7.99);
tm.put("Product E", 3.99);
// 打印 TreeMap
for (Map.Entry<String, Double> me : tm.entrySet()) {
System.out.println(me.getKey() + " => $" + me.getValue());
}
}
}
输出
Product E => $3.99 Product D => $7.99 Product C => $12.49 Product B => $5.99 Product A => $9.99
结论
在本文中,我们探索了利用 reverseOrder() 方法以反向顺序创建 TreeMap 的过程,并且我们已经看到了一些如何使用此 reverseOder() 方法执行此任务的示例。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

