zoukankan      html  css  js  c++  java
  • JAVA 使用Comparator接口实现自定义排序

    1、原则

    Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:
    int compare(Object o1, Object o2) 返回一个基本类型的整型
    如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
    如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)

     1 import java.util.ArrayList;
     2 import java.util.Comparator;
     3 import java.util.List;
     4 
     5 public class UserComparator implements Comparator < User > {
     6 
     7     public static void main( String[] args ) {
     8         List < User > users = new ArrayList < User >();
     9         users.add( new User( 10, "a" ) );
    10         users.add( new User( 11, "d" ) );
    11         users.add( new User( 15, "s" ) );
    12         users.add( new User( 6, "x" ) );
    13         users.add( new User( 17, "a" ) );
    14         users.add( new User( 17, "b" ) );
    15         users.add( new User( 17, "c" ) );
    16         users.add( new User( 17, "d" ) );
    17         UserComparator comparator = new UserComparator();
    18 
    19         users.sort( comparator );
    20         // 也可以使用:Collections.sort( users, comparator );
    21 
    22         for ( User u : users ) {
    23             System.out.println( u );
    24         }
    25     }
    26 
    27     @Override
    28     public int compare( User u1, User u2 ) {
    29         if ( u1.equals( u2 ) ) {
    30             return 0;
    31         }
    32         else if ( u1.getAge() < u2.getAge() ) {
    33             return 1;
    34         }
    35         else if ( u1.getAge() == u2.getAge() ) {
    36             int f = u1.getName().compareTo( u2.getName() );
    37             if ( f < 0 ) {
    38                 return -1;
    39             }
    40             return 0;
    41         }
    42         else {
    43             return -1;
    44         }
    45     }
    46 }
    47 
    48 class User {
    49     private int age;
    50     private String name;
    51 
    52     public User() {
    53 
    54     }
    55 
    56     public User( int age, String name ) {
    57         this.age = age;
    58         this.name = name;
    59     }
    60 
    61     public int getAge() {
    62         return age;
    63     }
    64 
    65     public void setAge( int age ) {
    66         this.age = age;
    67     }
    68 
    69     public String getName() {
    70         return name;
    71     }
    72 
    73     public void setName( String name ) {
    74         this.name = name;
    75     }
    76 
    77     @Override
    78     public String toString() {
    79         return "User [age=" + age + ", name=" + name + "]";
    80     }
    81 
    82 }
    User [age=17, name=a]
    User [age=17, name=b]
    User [age=17, name=c]
    User [age=17, name=d]
    User [age=15, name=s]
    User [age=11, name=d]
    User [age=10, name=a]
    User [age=6, name=x]
  • 相关阅读:
    Python-炫酷二维码
    Dictionary 序列化与反序列化
    获取数据库所有表名与字段名
    LinQ To Object 基本用法
    使用jq操作脚本生成元素的事件
    表单验证如何让select设置为必选
    js实现复制功能兼容ios
    微信小程序使用函数防抖解决重复点击消耗性能问题
    electronr进行签名与公证
    使用electron在mac升级签名后进行升级出现“QRLUpdaterErrorDomain”的错误
  • 原文地址:https://www.cnblogs.com/mengzj233/p/9816289.html
Copyright © 2011-2022 走看看