zoukankan      html  css  js  c++  java
  • 【java】实现Interface java.lang.Comparable<T>接口的int compareTo(T o)方法实现对象数组或链表或集合的排序,和挽救式对象比较器Interface java.util.Comparator<T>

     1 package 对象比较排序;
     2 
     3 import java.util.Arrays;
     4 
     5 class A implements Comparable<A>{
     6     private String name;
     7     private int age;
     8     public A(String name,int age){
     9         this.name=name;
    10         this.age=age;
    11     }
    12     @Override
    13     public int compareTo(A o) {//此方法无需手工调用,Arrays会自动调用
    14         if(this.age<o.age)
    15             return -1;//1.this小于返回负数,this大于返回正数,则升序;
    16         if(this.age>o.age)
    17             return 1;//2.this小于返回正数,this大于返回负数,则降序;
    18         return 0;//相等返回0
    19     }
    20     @Override
    21     public String toString() {
    22         return "name="+name+",age="+age+"
    ";
    23     }
    24 }
    25 public class TestComparable {
    26     public static void main(String[] args) {
    27         A[] as=new A[]{
    28                     new A("张三",63),
    29                     new A("李四",33),
    30                     new A("王五",53),
    31                     new A("赵六",43),
    32                 };
    33         Arrays.sort(as);
    34         System.out.println(Arrays.toString(as));
    35     }
    36 }
    View Code

    运行结果:

    [name=李四,age=33
    , name=赵六,age=43
    , name=王五,age=53
    , name=张三,age=63
    ]


     1 package 对象比较排序;
     2 
     3 import java.util.Arrays;
     4 import java.util.Comparator;
     5 
     6 class B{
     7     private String name;
     8     private int age;
     9     public B(String name,int age){
    10         this.name=name;
    11         this.age=age;
    12     }
    13     public int getAge() {
    14         return age;
    15     }
    16     @Override
    17     public String toString() {
    18         return "name="+name+",age="+age+"
    ";
    19     }
    20 }
    21 class BComparator implements Comparator<B>{
    22     @Override
    23     public int compare(B o1, B o2) {
    24         if(o1.getAge()<o2.getAge())
    25             return -1;
    26         if(o1.getAge()>o2.getAge())
    27             return 1;
    28         return 0;
    29     }
    30 }
    31 public class TestComparator {
    32     public static void main(String[] args) {
    33         B[] bs=new B[]{new B("张三",44),
    34                 new B("李四",33),
    35                 new B("王二",55),
    36                 new B("赵六",66)};
    37         BComparator bc=new BComparator();
    38         Arrays.sort(bs, bc);
    39         System.out.println(Arrays.toString(bs));
    40     }
    41 }
    View Code

    运行结果:

    [name=李四,age=33
    , name=张三,age=44
    , name=王二,age=55
    , name=赵六,age=66
    ]


    如果需要对一组对象进行排序建议优先使用Comparable

  • 相关阅读:
    hive学习
    spark Streaming
    spark sql
    参考
    数论基础
    2020.07.17模拟3
    2020.07.16模拟2
    关于Linux环境下的对拍
    2020.07.15模拟1
    三体
  • 原文地址:https://www.cnblogs.com/xiongjiawei/p/6680603.html
Copyright © 2011-2022 走看看