Java 如何使用Comparable接口创建TreeMap对象
TreeMap是Java集合框架中实现NavigableMap接口的一个类。它将地图的元素存储在一棵树结构中,并提供了一个有效的替代方法来按排序顺序存储键值对。需要注意的是,在创建TreeMap对象时,我们需要使用Comparable接口,以便可以保持元素的排序顺序。在本文中,我们将讨论一些使用Comparable接口创建TreeMap对象的Java程序。
使用Comparable接口创建TreeMap对象的Java程序
在直接跳转到Java程序之前,让我们简要了解一下Comparable接口的基础知识。
Comparable接口
当我们想按照它们的自然顺序对自定义对象进行排序时,这个接口非常有用。例如,它按照字典顺序对字符串排序,并按照数值顺序对数值排序。这个接口在’java.lang’包中可用。通常,此包中定义的类和接口默认可用,因此不需要显式导入此包。
语法
class nameOfclass implements Comparable
在这里,class是创建一个类的关键字,implements是启用使用接口提供的功能的关键字。
compareTo()
Comparable接口只定义了一个名为’ CompareTo’的方法,可以在其中重写以对对象的集合进行排序。它可以将类的对象与自身进行比较。当’this’对象等于传递的对象时,它返回0,如果’this’对象大于传递的对象,则返回正值,否则返回负值。
语法
compareTo(nameOfclass nameOfobject);
由于TreeMap以键值对的形式按排序顺序存储其元素,因此我们需要使用Comparable接口,否则会遇到ClassCastException。
示例
以下示例演示了在创建TreeMap时使用Comparable接口。
方法
- 创建一个实现Comparable接口的类’TrMap’。在其中,声明两个变量,并定义一个该类的构造函数,该构造函数带有名为’item’和’price’的参数,类型分别为string和double。
-
进一步进行,我们将使用’toString()’方法将对象的数据转换为字符串。然后,定义’compareTo’方法,并将类’TrMap’的一个对象作为参数,以比较’this’对象与新创建的对象。
-
现在,在main()方法中,声明一个名为’obj’的类’TrMap’的TreeMap对象,并使用名为’put()’的内置方法将对象的细节存储到其中。’item’为键,其对应的值为’price’。
-
最后,使用for-each循环内部的’keySet()’方法检索和打印与键关联的值。
示例
import java.util.*;
import java.lang.*;
public class TrMap implements Comparable<TrMap> {
String item;
int price;
TrMap(String item, int price) {
// this keyword shows these variables belong to constructor
this.item = item;
this.price = price;
}
// method for converting object into string
public String toString() {
return "Item: " + item + ", " + "Price: " + price;
}
public String getName() {
return this.item;
}
// overriding method
public int compareTo(TrMap comp) {
return this.item.compareTo(comp.item);
}
public static void main(String[] args) {
// Declaring collection TreeMap
TreeMap<String, TrMap> obj = new TreeMap<>();
// Adding object to the obj map
TrMap obj1 = new TrMap("TShirt", 495);
obj.put(obj1.getName(), obj1);
TrMap obj2 = new TrMap("Shirt", 660);
obj.put(obj2.getName(), obj2);
TrMap obj3 = new TrMap("Kurti", 455);
obj.put(obj3.getName(), obj3);
// printing details obj map
System.out.println("Elements of the map: ");
for (String unKey : obj.keySet()) {
System.out.println(obj.get(unKey));
}
}
}
输出
Elements of the map:
Item: Kurti, Price: 455
Item: Shirt, Price: 660
Item: TShirt, Price: 495
在上面的输出中,元素根据项名称进行排序。 结论 我们从定义Java集合框架的TreeMap类开始了本文,在后面的部分中,我们介绍了Comparable接口及其内置的名为compareTo的方法。最后,我们讨论了一个Java程序,以更好地理解使用Comparable接口创建TreeMap的用法。