Java集合:TreeSet
TreeSet
- TreeSet是SortedSet接口的实现类
- TreeSet可以确保集合元素处于排序状态
- 支持的排序方法:
- 自然排序(默认)
- 定制排序
自然排序
- 调用compareTo(Object obj)方法来比较元素间的大小关系,然后将集合升序排列
- 必须放入同类对象,否则会发生类型转换异常(使用泛型限制)
- 不可重复
Set<Integer> set = new TreeSet<>();
//自然排序
set.add(5);
set.add(3);
set.add(1);
set.add(4);
System.out.println(set);
//输出结果
//[1, 3, 4, 5]
定制排序
通过重写Comparator接口中的compare实现
//把person对象存在TreeSet中并按照年龄排序
//使用Comparator的接口,并对其中的比较方法进行重写
class Person implements Comparator<Person> {
int age;
String name;
//无参构造
public Person() {}
//有参构造,传入参数
public Person(String name,int age) {
this.age = age;
this.name = name;
}
//将compare重写为年龄的比较
@Override
public int compare(Person o1, Person o2) {
if(o1.age > o2.age){
return 1;
}else if(o1.age < o2.age){
return -1;
}else{
return 0;
}
}
}
使用:
public static void main(String[] args) {
Person p1 = new Person("zs",34);
Person p2 = new Person("ls",24);
Person p3 = new Person("ww",34);
Person p4 = new Person("ze",13);
/*new Person()作为实参传入TreeSet类重载的构造方法中
是实现了comparator接口类的对象
作为comparator的输入参数
*/
Set<Person> set = new TreeSet<Person>(new Person());
set.add(p1);
set.add(p2);
set.add(p3);
set.add(p4);
for(Person p : set){
System.out.println(p.name);
}
}
/*输出结果
ze
ls
zs
*/
由与set集合不允许存在重复元素,当年龄相同时,只会添加第一个元素(推测需要通过重写其他内容进行优化)
使用方法
与HashSet的方法相同
- add
- remove
- contains
- clear
- size
- 遍历
- ……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix