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的自学历程...只需坚持
  • 相关阅读:
    开始学习
    C# Excel批注“哪种开发语言最好”
    [LeetCode] Longest Substring Without Repeating Characters
    (Android 即时通讯) [悬赏],不管是谁发现一个漏洞奖励人民币1000元!
    10进制转16进制
    【2】按照Django官网,创建一个web app 创建app/创建相应的数据库表
    HTML5新特性之WebSocket
    Drupal 7模板(主题钩子)的建议
    检測磁盘驱动的健康程度SMART
    BZOJ2527: [Poi2011]Meteors
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5904194.html
Copyright © 2011-2022 走看看