package com.javase.collection.set.treeset; import java.util.TreeSet; /** * 自定义类,在TreeSet集合中排序,先按照年龄排序,年龄相同时按照姓名(String)排序。 * 注意:在自定义类中比较规则是如何写。(也就是如何重写compareTo方法) */ public class TreeSetText03 { public static void main(String[] args) { // 创建集合 TreeSet<Vip> vips = new TreeSet<Vip>(); // 添加元素 vips.add(new Vip(20,"zhangsi")); vips.add(new Vip(20,"zhangsan")); vips.add(new Vip(19,"lisi")); vips.add(new Vip(18,"liming")); vips.add(new Vip(18,"lisi")); // 遍历集合 for (Vip vip : vips) { System.out.println(vip); } } } /* 输出结果: Vip{age=18, name='liming'} Vip{age=18, name='lisi'} Vip{age=19, name='lisi'} Vip{age=20, name='zhangsan'} Vip{age=20, name='zhangsi'} */
package com.javase.collection.set.treeset; public class Vip implements Comparable<Vip>{ private int age; private String name; public Vip() { } public Vip(int age, String name) { this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Vip{" + "age=" + age + ", name='" + name + '\'' + '}'; } @Override public int compareTo(Vip o) { if (this.age == o.age){//年龄相同按照姓名排序 return this.name.compareTo(o.name);//这里是调用String的compareTo()方法,按照字典顺序比较两个字符串大小 }else {//年龄不同按照年龄排序 return this.age - o.age; } } }