[username=" + username + ", password=" + password + "]";
}
//重写compareTo()方法,对Person对象进行比较
@Override
public int compareTo(Person o) {
if(!this.username.equals(o.username)) {
//根据姓名及长度进行比较
return this.username.length() - o.username.length();
}else {
//根据密码进行比较
if(this.password.equals(o.password)) {
return 0;
}else {
//比较姓名的长度
return this.username.length() - o.username.length();
}
}
}
}
与本节内容配套的视频链接如下:戳链接一键直达
4.2 测试TreeSet排序功能
然后我们往TreeSet集合中添加若干个对象元素进行排序测试,代码如下:
import java.util.TreeSet;
/**
* @author 一一哥Sun
*/
public class Demo12 {
public static void main(String[] args) {
//TreeSet的去重原理
TreeSet<Person> set = new TreeSet<Person>();
set.add(new Person("admin","123"));
set.add(new Person("yyg","bb"));
set.add(new Person("jack","123"));
set.add(new Person("rose123","123"));
set.add(new Person("admin","123"));
set.add(new Person("xksss6","abc"));
//如果两个对象的用户名和密码都相等,则认为是两个相同的对象,且按照名字长度升序存放
for (Person person : set) {
System.out.println(person);
}
}
}
我们在遍历TreeSet时,输出的元素是有序的,这个顺序是元素的排序顺序。但是我们在使用TreeSet进行自然排序时,只能向 TreeSet 集合中添加相同数据类型的对象,否则会抛出 ClassCastException异常。如果向 TreeSet集合中添加了一个 Double类型的对象,则后面只能添加 Double对象,不能再添加其他类型的对象,例如 String对象等。
5. 配套视频
与本节内容配套的视频链接如下:戳视频一键直达
四. 结语
至此,我们就带各位把Set集合及其子类学习完了,现在你学会了吗?本文的重点内容如下所示:
Set用于存储不重复的元素集合;
放入HashSet的元素,与作为HashMap的key要求相同;
放入TreeSet的元素,与作为TreeMap的Key要求相同;
利用Set可以去除重复元素;
遍历SortedSet时,可以按照元素的排序顺序进行遍历,我们也可以自定义排序算法;