如何在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);

方法一

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

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

  • 定义“compareTo”方法以及作为参数的类“Cart”的对象,以比较“this”对象与新创建的对象。

  • 现在,在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集合只接受可比较的对象,所以它们是必需的。最后,我们讨论了一个Java程序,用于将自定义类对象添加到TreeSet。

更新于:2023年7月20日

783 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.