zoukankan      html  css  js  c++  java
  • TreeSet使用匿名内部类创建比较器添加元素

     1 import java.util.Comparator;
     2 import java.util.Iterator;
     3 import java.util.TreeSet;
     4 
     5 
     6 public class Test2
     7 {
     8     public static void main(String[] args)
     9     {    
    10         TreeSet<Person> set = new TreeSet<>(new Comparator<Person>() {
    11 
    12             @Override
    13             public int compare(Person o1, Person o2)
    14             {
    15                 int  result;
    16                 result = o1.getAge()-o2.getAge();
    17                 if(result==0) {
    18                     result = o1.getName().compareTo(o2.getName());
    19                 }
    20                 return result;
    21             }
    22         });
    23        Person p1 = new Person("剑魔",20);
    24        Person p2 = new Person("剑姬",20);
    25        Person p3 = new Person("剑豪",20);
    26        Person p4 = new Person("剑圣",20);
    27        set.add(p1);
    28        set.add(p2);
    29        set.add(p3);
    30        set.add(p4);
    31      Iterator<Person> iterator = set.iterator();
    32      while(iterator.hasNext()) {
    33          System.out.println(iterator.next());
    34      }
    35     }
    36 }


    自定义一个类

     1 public class Person
     2 {
     3     private String name;
     4     private int age;
     5     public String getName()
     6     {
     7         return name;
     8     }
     9     public void setName(String name)
    10     {
    11         this.name = name;
    12     }
    13     public int getAge()
    14     {
    15         return age;
    16     }
    17     public void setAge(int age)
    18     {
    19         this.age = age;
    20     }
    21     public Person(String name, int age)
    22     {
    23         super();
    24         this.name = name;
    25         this.age = age;
    26     }
    27     public Person()
    28     {
    29         super();
    30     }
    31     @Override
    32     public String toString()
    33     {
    34         return "Person [name=" + name + ", age=" + age + "]";
    35     }
    36     @Override
    37     public int hashCode()
    38     {
    39         final int prime = 31;
    40         int result = 1;
    41         result = prime * result + age;
    42         result = prime * result + ((name == null) ? 0 : name.hashCode());
    43         return result;
    44     }
    45     @Override
    46     public boolean equals(Object obj)
    47     {
    48         if (this == obj)
    49             return true;
    50         if (obj == null)
    51             return false;
    52         if (getClass() != obj.getClass())
    53             return false;
    54         Person other = (Person) obj;
    55         if (age != other.age)
    56             return false;
    57         if (name == null)
    58         {
    59             if (other.name != null)
    60                 return false;
    61         }
    62         else if (!name.equals(other.name))
    63             return false;
    64         return true;
    65     }
    66     
    67 }
    努力到感动自己,坚持到无能为力
  • 相关阅读:
    Ubuntu adb devices :???????????? no permissions (verify udev rules) 解决方法
    ubuntu 关闭显示器的命令
    ubuntu android studio kvm
    ubuntu 14.04版本更改文件夹背景色为草绿色
    ubuntu 创建桌面快捷方式
    Ubuntu 如何更改用户密码
    ubuntu 14.04 返回到经典桌面方法
    ubuntu 信使(iptux) 创建桌面快捷方式
    Eclipse failed to get the required ADT version number from the sdk
    Eclipse '<>' operator is not allowed for source level below 1.7
  • 原文地址:https://www.cnblogs.com/Riven/p/4658965.html
Copyright © 2011-2022 走看看