Java 如何将自定义类对象添加到中TreeSet中

Java 如何将自定义类对象添加到中TreeSet中

TreeSet是Java集合框架的一个类,实现了SortedSet接口。 记住它以升序存储元素,并且不允许重复的值。 在将自定义类对象添加到TreeSet时,我们需要遵守这个条件,否则我们将遇到一个ClassCastException异常。这里,自定义类对象指的是通过构造函数创建的用户定义对象。

添加自定义类对象到TreeSet的程序

在前一部分中我们指出,如果不满足TreeSet的条件,将会得到一个ClassCastException异常。为了避免这个问题,我们需要实现Comparable接口。让我们快速讨论一下这个接口。

Comparable接口

当我们想按照它们的自然顺序排序自定义对象时,这个接口非常有用。例如,它按照字典顺序对字符串进行排序,按照数值顺序对数字进行排序。这个接口在java.lang包中可用。通常,这个包中定义的类和接口默认可用于我们的使用,因此不需要显式地导入这个包。

语法

class nameOfclass implements Comparable<nameOfclass>

在这里,class是创建一个类的关键字并且implements是启用使用接口提供的特性的关键字。

compareTo()

Comparable接口只定义了一个名为‘CompareTo’的方法,可以在其中重写以对对象集合进行排序。它提供了比较类的对象的能力。当‘this’对象等于传递的对象时,它返回0,当‘this’对象大于传递的对象时,它返回正值,否则返回负值。

语法

compareTo(nameOfclass nameOfobject);

方法1

  • 首先,导入’java.util’包,以便我们可以使用TreeSet。

  • 创建一个实现Comparable接口的’Cart’类。在其中,声明两个变量,并定义一个带有类型为字符串和整数的参数’item’和’price’的构造函数。

  • 定义’compareTo’方法,将’Cart’类的对象作为参数与新创建的对象进行比较。

  • 现在,在main()方法中,声明一个名为’trSet’的类’Cart’的对象,类型为TreeSet的集合类型,并使用名为’add()’的内置方法将对象的详细信息存储到集合中。

  • 最后,使用for each循环打印TreeSet的对象。

示例

以下示例说明了如何将自定义类对象添加到TreeSet中。

import java.util.*;
public class Cart implements Comparable <Cart> {
   String item;
   int price;
   Cart(String item, int price) { // constructor
      // this keyword shows these variables belong to constructor
      this.item = item;
      this.price = price;
   }
   // overriding method
   public int compareTo(Cart comp) {
      if(this.price > comp.price) { // performing comparison
         return 1;
      } else {
         return -1;
      }
   }
   public static void main(String[] args) {

      // Declaring collection TreeSet
      TreeSet <Cart> trSet = new TreeSet <Cart>();

      // Adding object to the collection
      trSet.add(new Cart("Rice", 59));
      trSet.add(new Cart("Milk", 60));
      trSet.add(new Cart("Bread", 45));
      trSet.add(new Cart("Peanut", 230));
      trSet.add(new Cart("Butter", 55));

      // to print the objects
      for (Cart print : trSet) { 
         System.out.println("Item: " + print.item + ", " + "Price: " + print.price);
      }
   }
}

输出

Item: Bread, Price: 45
Item: Butter, Price: 55
Item: Rice, Price: 59
Item: Milk, Price: 60
Item: Peanut, Price: 230

结论

我们通过介绍实现了SortedSet接口的TreeSet类来开始这篇文章。在下一节中,我们了解了Comparable接口及其内置方法’compareTo()’。由于TreeSet集合只接受可比较的对象,它们是必需的。最后,我们讨论了一个将自定义类对象添加到TreeSet的Java程序。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程