TreeSet

TreeSet集合默认的规则

1.对于数值类型:Integer,Double,默认按照从小到打的顺序进行排序

2.对于字符,字符串类型,按照字符在ASCII码表中的数字升序进行排序

对于自定义类如何排序

1.方法一:默认排序/自然排序:javabean类实现Comparable接口比较规则

public int compareTo(Student o){

    //指定排序规则

   return this.getAge()-o.getAge();

}

返回值:负数:认为要添加的元素是小的,存左边

正数:认为要添加的元素是大的,存右边

0:认为要添加的元素已经存在,舍弃

2.比较器排序:创建TreeSet对象的时候,传递比较器Comparator指定规则

使用原则:默认使用第一种,如果第一种不能满足当前需求,就使用第二种

总结

1.如果想要集合中的元素可重复    ArrayList

2.如果集合元素可重复,而且当前的增删操作明显多于查询 LinkedList

3.如果想对集合的元素去重  HashSet集合

4.如果想对集合中的元素去重,而且保证存取顺序   LinkedHashSet

5.如果想对集合中的元素排序 TreeSet

04-09
### Java TreeSet 的使用方法及示例 #### 什么是 TreeSet? `TreeSet` 是 Java 集合框架中的一个重要实现类,它继承自 `AbstractSet` 并实现了 `NavigableSet` 接口。`TreeSet` 底层基于红黑树结构实现,因此它可以自动对存储的元素进行排序。 以下是关于 `TreeSet` 常见操作的具体说明及其代码示例: --- #### 创建并初始化 TreeSet 可以通过无参构造函数创建一个默认的 `TreeSet` 实例,或者通过指定比较器来定义排序方式[^4]。 ```java import java.util.TreeSet; public class Main { public static void main(String[] args) { // 默认按照自然顺序排列 TreeSet<Integer> treeSet = new TreeSet<>(); // 添加元素到 TreeSettreeSet.add(10); treeSet.add(5); treeSet.add(20); System.out.println("TreeSet elements: " + treeSet); // 输出 {5, 10, 20} } } ``` 上述代码展示了如何向 `TreeSet` 插入数据,并按升序排列[^2]。 --- #### 获取子集(subSet) 可以利用 `subSet()` 方法获取某个范围内的子集合。此方法接受两个参数:起始值和结束值(不包含结束值)。如果不存在满足条件的元素,则返回空集合[^1]。 ```java import java.util.TreeSet; public class SubSetExample { public static void main(String[] args) { TreeSet<Integer> treeSet = new TreeSet<>(); treeSet.add(1); treeSet.add(5); treeSet.add(10); treeSet.add(15); treeSet.add(20); // 获取介于 5 和 15 之间的元素(不含边界) System.out.println(treeSet.subSet(5, 15)); // 输出 [10] } } ``` --- #### 查找第一个元素(first()) 调用 `first()` 可以获得当前集合中最小的一个元素。如果没有元素存在则抛出异常[^3]。 ```java import java.util.TreeSet; public class FirstElementExample { public static void main(String[] args) { TreeSet<String> treeSet = new TreeSet<>(); treeSet.add("Apple"); treeSet.add("Banana"); treeSet.add("Cherry"); String firstElement = treeSet.first(); System.out.println("First element is: " + firstElement); // 输出 Apple } } ``` --- #### 自定义 Comparator 进行排序 当希望改变默认的自然排序逻辑时,可传入自定义的 `Comparator` 对象给 `TreeSet` 构造器。 ```java import java.util.Comparator; import java.util.TreeSet; public class CustomComparatorExample { public static void main(String[] args) { TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() { @Override public int compare(String s1, String s2) { return Integer.compare(s2.length(), s1.length()); // 按字符串长度降序排列 } }); treeSet.add("Short"); treeSet.add("LongerString"); treeSet.add("MediumLength"); System.out.println("Sorted by length descending: " + treeSet); // 输出 [LongerString, MediumLength, Short] } } ``` --- #### 总结 以上介绍了 `TreeSet` 的基本功能以及一些常用的方法,包括但不限于添加元素、查找特定位置的数据项、提取部分区间的内容等。这些特性使得 `TreeSet` 成为了处理有序且唯一数据的理想容器之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值