package com.test.collframework;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/**
* TreeSet是一个有序集合
*/
public class TreeSetTest {
public static void main(String[] args) {
Set<Item> set = new TreeSet<Item>();
set.add(new Item("Toaster",1234));
set.add(new Item("Widget",4562));
set.add(new Item("Modem",9912));
System.out.println(set);
Set<Item> sortByDescription = new TreeSet<Item>(new
Comparator<Item>() { //添加一个比较器
public int compare(Item a, Item b) {
String aDes = a.getDescription();
String bDes = b.getDescription();
return aDes.compareTo(bDes);
}
}
);
sortByDescription.addAll(set);
System.out.println(sortByDescription);
}
}
class Item implements Comparable<Item> {//Item类实现Comparable
private String description;
private int partNumber;
public Item(String aDescription, int aPartNumber) {
this.description = aDescription;
this.partNumber = aPartNumber;
}
public String getDescription() {
return description;
}
public boolean equals(Object otherObj) {
if(this == otherObj){
return true;
}
if(otherObj == null){
return false;
}
if(this.getClass() != otherObj.getClass()){
return false;
}
Item otherItem = (Item) otherObj;
return description.equals(this.getDescription()) && partNumber == otherItem.partNumber;
}
public int hashCode() {
return 13*description.hashCode() + 17*partNumber;
}
public String toString() {
return "[description =" + description + "],[partNumber =" + partNumber + "]";
}
public int compareTo(Item other) { //使用partNumber做比较
return partNumber - other.partNumber;
}
}
打印结果
[[description =Toaster],[partNumber =1234], [description =Widget],[partNumber =4562], [description =Modem],[partNumber =9912]]
[[description =Modem],[partNumber =9912], [description =Toaster],[partNumber =1234], [description =Widget],[partNumber =4562]]
分享到:
相关推荐
下面以`Person1`类为例,该类包含姓名和年龄两个属性,并实现`Comparable`接口: ```java class Person1 implements Comparable<Person1> { String name; int age; Person1(String name, int age) { this.name...
Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口及其实现类。理解它们各自的特性和使用场景对于编写高效、灵活的代码至关重要。 除此之外,文件...
4. **集合框架**:List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现类是Java编程的常用工具,了解它们的特点和使用场景是必要的。 5. **输入输出流**:I/O流是...
以TreeSet为例,教学时可以首先解释其内部的红黑树结构,然后通过实例演示添加元素、查找元素、排序等操作,让学生亲手实践,感受其内部的自动排序过程。此外,还可以讨论不同类型的比较器(Comparator)如何影响...
本例中,我们探讨了两种实现`Set`接口的类:`HashSet`和`TreeSet`,以及如何使用它们的一些基本操作。 首先,我们看`HashSet`的使用。`HashSet`是一个不保证元素顺序的集合,它根据元素的`hashCode`值来存储和检索...
这个“Java高级编程百例”很可能是为了帮助开发者深入理解Java的核心特性和高级技术。以下将根据标题和描述,结合Java的高级特性,详细阐述可能涵盖的知识点。 1. 多线程:在Java中,多线程是高级编程的重要部分。...
《Java实用程序设计100例》是一本深入浅出的Java编程教程,旨在通过具体的实例帮助读者掌握Java编程的核心技巧和实践经验。该书由人民邮电出版社出版,其代码库包含了一系列精心设计的示例,涵盖了Java语言的各个...
在本例中,`TreeSet<Course>`可以确保集合只包含课程对象,并且在添加和比较时应用自定义的比较逻辑。 6. **操作示例** - 学生添加课程:创建一个新的课程对象,然后使用`TreeSet.add()`方法将其加入课表。如果...
5. **集合框架**:List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、TreeMap)接口及其实现类的理解,包括它们的特点、操作效率以及遍历方式。 6. **多线程**:线程的创建方式(实现...
- List、Set、Queue接口:ArrayList、LinkedList、HashSet、TreeSet等具体实现的特性。 - Map接口:HashMap、TreeMap、LinkedHashMap的区别与使用。 - 遍历集合:迭代器(Iterator)的使用。 5. **字符串处理** ...
此外,TreeSet和TreeMap基于红黑树,提供有序存储;LinkedList适合频繁的插入和删除操作。 3. **IO/NIO**:Java的IO流模型支持字符流和字节流,分为输入流和输出流,提供了缓冲、转换和过滤等功能。NIO(Non-...
同时,了解高级集合类如TreeSet、ConcurrentHashMap,以及Stream API的应用,可以提升代码的简洁性和可读性。 4. **IO流**:Java的IO流系统提供了读写文件、网络通信的能力。理解字节流和字符流的区别,以及如何...
11. **集合框架**:包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap)接口及其实现,理解它们的特性和使用场景至关重要。 12. **多线程**:Java内置了对多线程的支持,...
- **List、Set与Map接口**:了解ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类的特性和使用场景。 - **迭代器**:学习如何遍历集合元素,以及Iterator接口的使用方法。 5. **文件与I/O流**...
4. **集合框架**:包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口及其实现类。了解它们的特点和应用场景,能够有效管理和操作数据。 5. **多线程编程**:Java...
7. **集合框架**:Java集合框架包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap),它们提供了存储和操作对象的高效工具。 8. **IO流**:Java的输入/输出流系统允许程序...
5. **集合框架**:Java集合框架包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap)。它们提供了存储和管理对象的容器,方便进行数据操作和管理。 6. **多线程**:Java...
Java编程百例是一份集合了众多实用编程示例的学习资源,涵盖了从基础到进阶的各种主题,旨在帮助初学者和有经验的开发者巩固并提升Java编程技能。下面将对标题和描述中涉及的知识点进行详细解释,并扩展相关的重要...