TreeSet排序方法

A: TreeSet集合的特点: 元素唯一,并且可以对元素进行排序
排序:
a: 自然排序
b: 使用比较器排序
到底使用的是哪一种的排序取决于,构造方法.
B:案例演示: TreeSet存储Integer类型的元素并遍历
存储下列元素: 20 , 18 , 23 , 22 , 17 , 24, 19 , 18 , 24

注意:使用TreeSet集合进行元素的自然排序,那么对元素有要求,要求这个元素
必须实现Comparable接口 否则无法进行自然排序

  保证元素的唯一性是靠compareTo方法的返回值来确定如果返回0 表示两个元素相等则不重复存储
public class MyTest {public static void main(String[] args) {TreeSet<Student> set = new TreeSet<>(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {int num =o1.getAge() - o2.getAge();//如果年龄一样不能说明是同一个对象int num2 = num == 0 ? o1.getName().compareTo(o2.getName()) : num;return num;}});set.add(new Student("小萨", 29));set.add(new Student("李商隐", 230));set.add(new Student("小萨", 29));set.add(new Student("李白", 232));set.add(new Student("杜甫", 231));System.out.println(set);}
}
public class Student implements Comparable<Student> {private String name;private int age;public Student() {}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;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int compareTo(Student s) {int num = this.age - s.age;//如果年龄一样不能说明是同一个对象int num2 = num == 0 ? this.name.compareTo(s.name) : num;return num;}
}

结果为:[Student{name=‘小萨’, age=29}, Student{name=‘李商隐’, age=230}, Student{name=‘杜甫’, age=231}, Student{name=‘李白’, age=232}]

本文链接:https://my.lmcjl.com/post/8305.html

展开阅读全文

4 评论

留下您的评论.