java TreeSet 作者:马育民 • 2022-06-29 15:38 • 阅读:10036 # 说明 TreeSet,无序不重复,可以 **指定排序** 线程不安全(不同步)。底层基于TreeMap实现。 ### 常用方法 - add() - remove() - size() - E first() 返回此集合中当前的第一个(最低)元素 - E last() 返回此集合中当前的最后(最高)元素。 # 排序 ### compareable 元素类实现 `Comparable` 接口,覆盖 `compareTo()` 方法 ### Comparator 元素类实现 `Comparator` 接口,覆盖 `compare()` 方法 # 案例 ### 元素类 ``` package day18; public class Student implements Comparable{ private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } /** * 根据年龄正序排序,年龄小的在前,年龄大的在后 */ @Override public int compareTo(Student o) { if( this.age > o.getAge()){ // 下一个元素中的年龄 > 上一个元素的年龄 return 1; }else if( this.age < o.getAge() ){ // 下一个元素中的年龄 < 上一个元素的年龄 return -1; }else{ // 两个元素的年龄相等时,再比较名字 // 如果返回0,就说明这2个对象内容相同,就会保留一个 return this.name.compareTo(o.getName()) ; } } } ``` ### 测试类 ``` package day18; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class S4TreeSet { public static void main(String[] args) { Set set = new TreeSet<>(); Student lilei = new Student("李雷", 20); Student lucy = new Student("lucy", 16); Student lili = new Student("lili", 16); Student hmm = new Student("韩梅梅", 25); Student zhangsan = new Student("张三", 16); Student lucy2 = new Student("lucy", 16); set.add(lilei); set.add(lucy); set.add(lili); set.add(hmm); set.add(zhangsan); set.add(lucy2); for( Student item : set){ System.out.println(item); } } } ``` 原文出处:http://malaoshi.top/show_1IX3aMuf5Fu7.html