Java 如何使用Comparable接口创建TreeMap对象

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的用法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程