TreeSet

 

1
2
3
4
5
6
7
8
9
10
11
12
/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*vx:it_daimeng
*/

  

1、简介

        TreeSet类扩展了 AbstractSet和implements NavigableSet接口。它与 HashSet 类非常相似,不同之处在于它按排序顺序存储元素。其底层实现为红黑树。

2、结构

编辑

3、特性

        它扩展AbstractSet了扩展类的AbstractCollection类。

        它实现NavigableSet了扩展接口的SortedSet接口。

        不允许重复值。

        不允许null值。

        有序集合。

        不允许插入异构对象。

        非线程安全。

4、案例

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//自动排序
        TreeSet<Integer> treeSet=new TreeSet<Integer>();
         
        treeSet.add(20);
         
        treeSet.add(18);
         
        treeSet.add(17);
         
        treeSet.add(21);
         
        System.out.println(treeSet);
         
        
       TreeSet<String> treeSet2=new TreeSet<String>();
         
        treeSet2.add("a");
         
        treeSet2.add("c");
         
        treeSet2.add("b");
         
        treeSet2.add("ab");
         
        System.out.println(treeSet2);
 
  
 
TreeSet<Person> treeSet=new TreeSet<Person>();
         
        //按照年龄排序(自定义排序的规则)
         
        treeSet.add(new Person("aa", 20));
        treeSet.add(new Person("bb", 18));
        treeSet.add(new Person("cc", 17));
        treeSet.add(new Person("dd", 21));
         
        System.out.println(treeSet);   
点击并拖拽以移动
 TreeSet<Integer> treeSet=new TreeSet<Integer>();
          
         treeSet.add(20);
          
         treeSet.add(18);       
          
         treeSet.add(30);
          
         treeSet.add(25);
          
         System.out.println(treeSet);
          
         System.out.println(treeSet.first()); //返回第一个(最小)
          
         System.out.println(treeSet.last()); //返回最后一个(最大);
          
         System.out.println(treeSet.floor(24));// <=指定元素的最大的元素
          
         System.out.println(treeSet.lower(25)); // <指定元素的最大的元素
          
         System.out.println(treeSet.ceiling(25));// >=指定元素的最小的元素
          
         System.out.println(treeSet.higher(18)); // >指定元素的最小的元素
          
         System.out.println(treeSet.pollFirst()); //获得第一个元素 并且将其从集合中删除
          
         System.out.println(treeSet);
          
         System.out.println(treeSet.pollLast()); //获得最后一个元素 并且将其从集合中删除      
             
         treeSet.add(21);
          
         treeSet.add(24);
          
         System.out.println(treeSet);
          
         //返回的是>=20&& <24的所有集合元素
         SortedSet<Integer> set= treeSet.subSet(20, 24);
          
         for(Integer integer:set)
             System.out.println(integer);
          
         //返回的是>=21的所有集合元素
         SortedSet<Integer> set2= treeSet.tailSet(21);
          
         for(Integer integer:set2)
             System.out.println(integer);
          
          
         System.out.println(treeSet);

  

 

posted @   呆萌老师  阅读(17)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示