zoukankan      html  css  js  c++  java
  • java 17

     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() + "	" + p.getState() + "	"
    75                     + p.getAge());
    76         }
    77 
    78     }
    79 
    80 }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    Proj THUDBFuzz Paper Reading: PMFuzz: Test Case Generation for Persistent Memory Programs
    入围 WF 后训练记
    算法竞赛历程
    2021 多校 杭电 第十场
    2021 多校 杭电 第九场
    2021 多校 牛客 第十场
    2021 多校 牛客 第九场
    2021 多校 杭电 第八场
    2021 多校 杭电 第六场
    2021 多校 杭电 第七场
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5904194.html
Copyright © 2011-2022 走看看