首页 > 代码库 > java 17 - 8 TressSet比较器排序元素
java 17 - 8 TressSet比较器排序元素
1 package zl_TreeSet; 2 3 import java.util.Comparator; 4 import java.util.TreeSet; 5 6 /* 7 用StreeSet集合存储自定义对象并遍历。这次用比较器排序 8 public TreeSet(Comparator comparator) 比较器排序 9 这种方法有两种做法:10 1:创建一个把Comparator为接口的类,11 2:如果一个方法的参数是接口,那么真正要的是接口的实现类的对象12 而匿名内部类就可以实现这个东西13 14 ( new 类名或者接口名(){15 重写方法;16 } );17 18 创建TreeSet集合,添加动物对象,按照以下规则进行排序:19 品种名字长度短的在前面20 */21 public class TreeSetDemo2 {22 23 public static void main(String[] args) {24 // public TreeSet(Comparator comparator) 比较器排序25 // 方式1:创建一个把Comparator为接口的类,然后进行创建26 // TreeSet<Person> ts = new TreeSet<Person>(new MyComparator());27 28 // 方式2:内部匿名类29 TreeSet<Person> ts = new TreeSet<Person>(new Comparator<Person>() {30 public int compare(Person a1, Person a2) {31 32 // 对比名字长度33 int num1 = a1.getName().length() - a2.getName().length();34 35 // 长度相同,则再对比名字内容36 int num2 = num1 == 0 ? a1.getName().compareTo(a2.getName())37 : num1;38 39 // 名字完全一样,再进行省份长度判断40 int num3 = num2 == 0 ? a1.getState().length()41 - a2.getState().length() : num2;42 43 // 省份长度也一样,再进行内容比较44 int num4 = num3 == 0 ? a1.getState().compareTo(a2.getState())45 : num3;46 47 // 上面都一样,就进行年龄比较48 int num5 = num4 == 0 ? a1.getAge() - a2.getAge() : num4;49 50 return num5;51 }52 });53 54 // 创建自定义对象55 Person p1 = new Person("熊大", "东北", 21);56 Person p2 = new Person("熊二", "四川", 17);57 Person p3 = new Person("熊大", "福建", 21);58 Person p4 = new Person("熊大", "福建", 20);59 Person p5 = new Person("熊二", "广东", 17);60 Person p6 = new Person("熊大", "东北", 21);61 Person p7 = new Person("熊大", "福建", 21);62 63 // 添加进集合64 ts.add(p1);65 ts.add(p2);66 ts.add(p3);67 ts.add(p4);68 ts.add(p5);69 ts.add(p6);70 ts.add(p7);71 72 // 进行遍历73 for (Person p : ts) {74 System.out.println(p.getName() + "\t" + p.getState() + "\t"75 + p.getAge());76 }77 78 }79 80 }
java 17 - 8 TressSet比较器排序元素
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。