如何在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。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP