• java集合中对象某属性比较排序Comparable与Comparator


    要对集合中的对象的某属性进行排序有两种方式。

    a. 一种是要排序对象类实现comparable接口的compareTo方法;然后把对象放入list;然后调用Collections.sort(list);
    b. 一种是不对要排序对象类做任何改动,创建Comparator接口的实现类C;然后 把对象放入list;然后调用Collections.sort(list, C);

    a.eg

    ----------------------------------

     1 public class User implements Comparable<User>{
     2     private String name;
     3     private int age;
     4     private int gender;
     5     private String address;
     6     
     7     public String getName() {
     8         return name;
     9     }
    10     
    11     public void setName(String name) {
    12         this.name = name;
    13     }
    14     
    15     public int getAge() {
    16         return age;
    17     }
    18     
    19     public void setAge(int age) {
    20         this.age = age;
    21     }
    22     
    23     public int getGender() {
    24         return gender;
    25     }
    26     
    27     public void setGender(int gender) {
    28         this.gender = gender;
    29     }
    30     
    31     public String getAddress() {
    32         return address;
    33     }
    34     
    35     public void setAddress(String address) {
    36         this.address = address;
    37     }
    38     
    39     public User() {
    40         super();
    41     }
    42     
    43     public User(String name, int age, int gender, String address) {
    44         super();
    45         this.name = name;
    46         this.age = age;
    47         this.gender = gender;
    48         this.address = address;
    49     }
    50    
    51 
    52     @Override
    53     public int compareTo(User o) {
    54         if(o!=null){
    55             if(this.getAge()>o.getAge()){
    56 
    57                return 1;
    58             }else if(this.getAge()==o.getAge()){
    59 
    60                return 0;
    61 
    62             }
    63 
    64        }
    65         return -1;
    66     }
    67 }

    -------------------------------------------main

     1 List<User> ulist = new ArrayList<User>();
     2 ulist.add(new User("wangbo",29,1,"长沙"));
     3 ulist.add(new User("wumei",44,1,"株洲"));
     4 ulist.add(new User("zhangjie",19,1,"岳阳"));
     5 ulist.add(new User("lihua",36,1,"长沙"));
     6 ulist.add(new User("zhangchangzhe",19,1,"衡阳"));
     7 
     8 Collections.sort(list);
     9 
    10 for(User u:ulist){
    11             System.out.println(u.getName()+"	"+u.getAge()+"	"+u.getAddress());
    12 }
    13 
    14  

    ==============================================

    b.eg

    --------------------------------

     1 public class User {
     2     private String name;
     3     private int age;
     4     private int gender;
     5     private String address;
     6     
     7     public String getName() {
     8         return name;
     9     }
    10     
    11     public void setName(String name) {
    12         this.name = name;
    13     }
    14     
    15     public int getAge() {
    16         return age;
    17     }
    18     
    19     public void setAge(int age) {
    20         this.age = age;
    21     }
    22     
    23     public int getGender() {
    24         return gender;
    25     }
    26     
    27     public void setGender(int gender) {
    28         this.gender = gender;
    29     }
    30     
    31     public String getAddress() {
    32         return address;
    33     }
    34     
    35     public void setAddress(String address) {
    36         this.address = address;
    37     }
    38     
    39     public User() {
    40         super();
    41     }
    42     
    43     public User(String name, int age, int gender, String address) {
    44         super();
    45         this.name = name;
    46         this.age = age;
    47         this.gender = gender;
    48         this.address = address;
    49     }
    50     
    51 }
    52 
    53  

    ------------------------------

     1 import java.util.Comparator;
     2 
     3 public class ComparatorImpl implements Comparator<User>{
     4 
     5     @Override
     6     public int compare(User o1, User o2) {
     7         
     8         if(null!=o1 && null!=o2){
     9             if(o1.getAge() >o2.getAge()){
    10                 return 1;
    11             }else if(o1.getAge() ==o2.getAge()){
    12                 return 0;
    13             }
    14         }
    15         return -1;
    16     }
    17 
    18 }

    -----------------------------------main

     1 List<User> ulist = new ArrayList<User>();
     2         ulist.add(new User("wangbo",29,1,"长沙"));
     3         ulist.add(new User("wumei",44,1,"株洲"));
     4         ulist.add(new User("zhangjie",19,1,"岳阳"));
     5         ulist.add(new User("lihua",36,1,"长沙"));
     6         ulist.add(new User("zhangchangzhe",19,1,"衡阳"));
     7         Collections.sort(ulist, new ComparatorImpl());
     8         for(User u:ulist){
     9             System.out.println(u.getName()+"	"+u.getAge()+"	"+u.getAddress());
    10         }
  • 相关阅读:
    【转载】分布式之redis复习精讲
    Oracle学习笔记——常用函数总结
    数据库 字段动态添加
    c# form的设定
    C# 单元测试,测试资源管理器里面没有需要的单元测试
    Nvidia--cuda--document
    C# 文件的读取与另存为(WPF)
    java反射概述
    java设计模式:工厂模式
    oracle表被锁定的解决办法
  • 原文地址:https://www.cnblogs.com/wdmwj626/p/4773265.html
Copyright © 2020-2023  润新知