(黑马程序员)TreeSet集合总节笔记(一)
来源:互联网 发布:基于nodejs的cms 编辑:程序博客网 时间:2024/05/21 08:03
TreeSet,当你执行add()方法的时候,集合会自动排序,所以是一种有序的集合。
使用TreeSet有两种方法:
一、元素实现Comparable接口,然后直接通过add方法添加元素即可。
二、创建一个Comparator,并在构造TreeSet的时候传入,如下:
//我这里Person为待添加元素
Set<Person> persons = new TreeSet<Person>(new PersonComparator());
现在需求很简单,根据Person的优先级字段(Priority)进行排序,Person类代码如下:
Java代码
public class Person implements Comparable<SortPerson> {
private String personName;
private Integer priority;
public SortPerson() {
}
public SortPerson(String personName, Integer priority) {
this.personName = personName;
this.priority = priority;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public Integer getPriority() {
return priority;
}
public void setPriority(Integer priority) {
this.priority = priority;
}
@Override
public int compareTo(SortPerson o) {
return priority.compareTo(o.getPriority());
}
}
测试代码如下:
Java代码
@Test
public void sortPerson() {
Set<SortPerson> persons = new TreeSet<SortPerson>();
persons.add(new SortPerson("001", 1));
persons.add(new SortPerson("002", 1));
persons.add(new SortPerson("003", 1));
assertEquals(3, persons.size()); // ①
}
测试并没有通过,在行①,这里实际集合size为1,出了什么问题呢?
soga,原来TreeSet的add方法会先调用Person的compareTo方法判断元素是否重复,因为Priority全部为1,所以TreeSet认为后两个Person是重复的,这样的结果显然不是我们想要的,重新实现compareTo方法如下:
Java代码
@Override
public int compareTo(SortPerson o) {
int compare1 = priority.compareTo(o.getPriority());
return compare1 == 0 ? this.personName.compareTo(o.personName) : compare1;
}
再次运行测试,OK了。
这个代码证明了TreeSet集合添加元素时的特点,和比较的特性,判断相等的依据。
- (黑马程序员)TreeSet集合总节笔记(一)
- (黑马程序员)TreeSet集合总节笔记(二)
- [黑马程序员]集合--TreeSet
- 黑马程序员--java集合TreeSet
- 黑马程序员--集合框架笔记(一)
- (黑马程序员)学习笔记,Collection集合(ArrayList、LinkedList、Vector、HashSet、TreeSet)
- 黑马程序员_JAVA笔记14——集合框架(List、HashSet、TreeSet)
- 黑马程序员------毕老师视频笔记第13-17天------集合Collection-Set-(HashSet、TreeSet)
- 黑马程序员_集合之Set(HashSet与TreeSet)
- 黑马程序员——集合框架(TreeSet)
- 黑马程序员--集合之HashSet/TreeSet原理
- 黑马程序员 集合框架之TreeSet实例
- 黑马程序员——TreeSet集合
- 黑马程序员 集合(一)
- 黑马程序员---集合(一)
- 黑马程序员--集合(一)
- 黑马程序员_学习笔记:10) 集合框架2:Set(HashSet、TreeSet)、Map(Hashtable、HashMap、TreeMap)、Collections、Arrays
- 黑马程序员——集合学习笔记(一)
- iPhone应用开发从入门到精通
- HTML 5开发精要与实例详解
- c3p0 You can't operate on a closed Connection解决办法
- PHP中的is_callable函数
- Rational rose中实心菱形的画法
- (黑马程序员)TreeSet集合总节笔记(一)
- 深入linux设备驱动程序内核机制(第七章) 读书笔记
- 一个让人看了心酸、落泪的故事
- C# 我以为的入门
- POJ--2236--Wireless Network
- CSDN文章
- iOS中使用QLPreviewController来预览文件
- vs2010中的TODO使用
- QT图标