如何在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”,类型分别为字符串和双精度浮点数。

  • 接下来,我们将使用“toString()”方法将对象的数据转换为字符串。然后,定义“compareTo”方法以及作为参数的“TrMap”类对象,以将“this”对象与新创建的对象进行比较。

  • 现在,在main()方法中,声明一个名为“obj”的TreeMap类的“TrMap”对象,并使用名为“put()”的内置方法将对象详细信息存储到其中。“item”是键,其对应的值是“price”。

  • 最后,在foreach循环中使用“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程序,以便更好地理解在创建TreeMap中使用Comparable接口。

更新于:2023年7月19日

251 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.