diff --git a/s-day04/src/com/inmind/treeset02/Student.java b/s-day04/src/com/inmind/treeset02/Student.java new file mode 100644 index 0000000..4be5024 --- /dev/null +++ b/s-day04/src/com/inmind/treeset02/Student.java @@ -0,0 +1,41 @@ +package com.inmind.treeset02; + +import java.util.Objects; + +public class Student implements Comparable{ + String name; + int age; + + public Student(String name, int age) { + this.name = name; + this.age = age; + } + + @Override + public String toString() { + return "Student{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + + Student student = (Student) o; + return age == student.age && Objects.equals(name, student.name); + } + + @Override + public int hashCode() { + int result = Objects.hashCode(name); + result = 31 * result + age; + return result; + } + + @Override + public int compareTo(Student o) { + return this.age - o.age; + } +} diff --git a/s-day04/src/com/inmind/treeset02/TreeSetDemo09.java b/s-day04/src/com/inmind/treeset02/TreeSetDemo09.java new file mode 100644 index 0000000..6dda25a --- /dev/null +++ b/s-day04/src/com/inmind/treeset02/TreeSetDemo09.java @@ -0,0 +1,31 @@ +package com.inmind.treeset02; + +import java.util.Comparator; +import java.util.TreeSet; + +/* +TreeSet保存自定义对象 +注意:TreeSet会使用元素的自带的自然排序功能Comparable接口 + */ +public class TreeSetDemo09 { + public static void main(String[] args) { + //创建一个对学生对象有排序功能的集合 + TreeSet treeSet = new TreeSet<>(); + treeSet.add(new Student("小王1", 18)); + treeSet.add(new Student("小王2", 17)); + treeSet.add(new Student("小王3", 20)); + System.out.println(treeSet); + System.out.println("--------------如果自定义对象没有自然排序或者不符合我们的需求,使用比较器------------------"); + TreeSet sets = new TreeSet<>(new Comparator() { + @Override + public int compare(Student o1, Student o2) { + return o2.age - o1.age; + } + }); + + sets.add(new Student("小王1", 18)); + sets.add(new Student("小王2", 17)); + sets.add(new Student("小王3", 20)); + System.out.println(sets); + } +}