`

TreeSet小例

 
阅读更多

 

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]]

分享到:
评论

相关推荐

    在TreeSet中添加自定义对象

    下面以`Person1`类为例,该类包含姓名和年龄两个属性,并实现`Comparable`接口: ```java class Person1 implements Comparable&lt;Person1&gt; { String name; int age; Person1(String name, int age) { this.name...

    Java设计100例

    Java集合框架包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口及其实现类。理解它们各自的特性和使用场景对于编写高效、灵活的代码至关重要。 除此之外,文件...

    Java编程 100例

    4. **集合框架**:List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)接口及其实现类是Java编程的常用工具,了解它们的特点和使用场景是必要的。 5. **输入输出流**:I/O流是...

    Java容器类的教学实践与思考.pdf

    以TreeSet为例,教学时可以首先解释其内部的红黑树结构,然后通过实例演示添加元素、查找元素、排序等操作,让学生亲手实践,感受其内部的自动排序过程。此外,还可以讨论不同类型的比较器(Comparator)如何影响...

    金陵科技学院软件工程学院大二上Java高级1203Set.docx

    本例中,我们探讨了两种实现`Set`接口的类:`HashSet`和`TreeSet`,以及如何使用它们的一些基本操作。 首先,我们看`HashSet`的使用。`HashSet`是一个不保证元素顺序的集合,它根据元素的`hashCode`值来存储和检索...

    Java高级编程百例

    这个“Java高级编程百例”很可能是为了帮助开发者深入理解Java的核心特性和高级技术。以下将根据标题和描述,结合Java的高级特性,详细阐述可能涵盖的知识点。 1. 多线程:在Java中,多线程是高级编程的重要部分。...

    Java实用程序设计100例

    《Java实用程序设计100例》是一本深入浅出的Java编程教程,旨在通过具体的实例帮助读者掌握Java编程的核心技巧和实践经验。该书由人民邮电出版社出版,其代码库包含了一系列精心设计的示例,涵盖了Java语言的各个...

    java作业5 学生选课系统(简易)

    在本例中,`TreeSet&lt;Course&gt;`可以确保集合只包含课程对象,并且在添加和比较时应用自定义的比较逻辑。 6. **操作示例** - 学生添加课程:创建一个新的课程对象,然后使用`TreeSet.add()`方法将其加入课表。如果...

    java 面试 150例

    5. **集合框架**:List(ArrayList、LinkedList)、Set(HashSet、TreeSet)和Map(HashMap、TreeMap)接口及其实现类的理解,包括它们的特点、操作效率以及遍历方式。 6. **多线程**:线程的创建方式(实现...

    Java编程100例

    - List、Set、Queue接口:ArrayList、LinkedList、HashSet、TreeSet等具体实现的特性。 - Map接口:HashMap、TreeMap、LinkedHashMap的区别与使用。 - 遍历集合:迭代器(Iterator)的使用。 5. **字符串处理** ...

    coreJava高级例

    此外,TreeSet和TreeMap基于红黑树,提供有序存储;LinkedList适合频繁的插入和删除操作。 3. **IO/NIO**:Java的IO流模型支持字符流和字节流,分为输入流和输出流,提供了缓冲、转换和过滤等功能。NIO(Non-...

    java实效编程百例

    同时,了解高级集合类如TreeSet、ConcurrentHashMap,以及Stream API的应用,可以提升代码的简洁性和可读性。 4. **IO流**:Java的IO流系统提供了读写文件、网络通信的能力。理解字节流和字符流的区别,以及如何...

    JAVA编程百例

    11. **集合框架**:包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap)接口及其实现,理解它们的特性和使用场景至关重要。 12. **多线程**:Java内置了对多线程的支持,...

    经典JAVA 编程150例

    - **List、Set与Map接口**:了解ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等实现类的特性和使用场景。 - **迭代器**:学习如何遍历集合元素,以及Iterator接口的使用方法。 5. **文件与I/O流**...

    Java实效编程百例

    4. **集合框架**:包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap)等接口及其实现类。了解它们的特点和应用场景,能够有效管理和操作数据。 5. **多线程编程**:Java...

    JAVA程序设计100例.rar

    7. **集合框架**:Java集合框架包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap),它们提供了存储和操作对象的高效工具。 8. **IO流**:Java的输入/输出流系统允许程序...

    java编程100例

    5. **集合框架**:Java集合框架包括List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)和Map(如HashMap、TreeMap)。它们提供了存储和管理对象的容器,方便进行数据操作和管理。 6. **多线程**:Java...

    java编程百例

    Java编程百例是一份集合了众多实用编程示例的学习资源,涵盖了从基础到进阶的各种主题,旨在帮助初学者和有经验的开发者巩固并提升Java编程技能。下面将对标题和描述中涉及的知识点进行详细解释,并扩展相关的重要...

Global site tag (gtag.js) - Google Analytics