本帖最后由 Kevin.Kang 于 2015-7-21 14:38 编辑
- package com.kxg.set;
- import java.util.Comparator;
- import java.util.TreeSet;
- public class TreeSetDemo2 {
- public static void main(String[] args) {
- TreeSet<Student> set = new TreeSet<Student>();
- TreeSet<Student> set2 = new TreeSet<>(new Comparator<Student>() {
- @Override
- public int compare(Student s1, Student s2) {
- // 主要条件:按照名字长度排序,访问不到Student类中的name和age,换用getXxx方法得到。
- int num = s1.getName().length() - s2.getName().length();
- // 次要条件:名字长度相同,不代表名字内容相同
- // 如果名字长度相同,就比较名字内容是否相同
- int num2 = num == 0 ? s1.getName().compareTo(s2.getName())
- : num;
- // 名字内容相同,不代表年龄相同
- // 如果名字内容相同,比较对象的年龄是否相同,如果相同就认为是同一个对象,不添加
- int num3 = num2 == 0 ? s1.getAge() - s2.getAge() : num2;
- return num3;
- }
- });
- Student s1 = new Student("kangxiaoguang", 23);
- Student s2 = new Student("liyanxu", 20);
- Student s3 = new Student("renxingya", 23);
- Student s4 = new Student("zhaolei", 19);
- Student s5 = new Student("wangao", 21);
- Student s6 = new Student("kangxiaoguang", 23);
- Student s7 = new Student("renxingya", 33);
- Student s8 = new Student("liyanxu", 20);
- Student s9 = new Student("liyanxu", 22);
- set.add(s1);
- set.add(s2);
- set.add(s3);
- set.add(s4);
- set.add(s5);
- set.add(s6);
- set.add(s7);
- set.add(s8);
- set.add(s9);
- set2.add(s1);
- set2.add(s2);
- set2.add(s3);
- set2.add(s4);
- set2.add(s5);
- set2.add(s6);
- set2.add(s7);
- set2.add(s8);
- set2.add(s9);
- for (Student s : set) {
- System.out.println(s);
- }
- }
- }
复制代码
|