• java比较器


    java中有两种比较器 : Comparable & Comparator

     

    1.Comparable

    /*
    1.Comparable的使用: 实现Comparable接口 , 重写CompareTo(Obj)方法
    2.举例 : String , 包装类等 , 都重写了CompareTo()方法
    3.重写CompareTo(Obj)的规则 : 如果当前对象this大于形参Obj,则返回正整数 , 反之 , 返回负整数, 若this等于Obj等返回0;
    4.在自定义类重写CompareTo()方法,指明如何排序
     */
    
    import java.util.Arrays;
    
    public class Comparable {
        public static void main(String[] args) {
          Person[] p = new Person[3];
          p[0]=new Person(13);
          p[1]=new Person(6);
          p[2]=new Person(9);
             Arrays.sort(p);
            System.out.println(Arrays.toString(p));
        }
    }
    public class Person implements java.lang.Comparable {
        int age;
    
        public Person(int age) {
            this.age = age;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "Person{" +
                    "age=" + age +
                    '}';
        }
    
        @Override
        public int compareTo(Object o) {
            if (o instanceof Person){
                Person p =(Person) o;
            //方式一 :
                if (this.age > p.age){
                    return 1;
                }else if (this.age < p.age){
                    return -1;
                }else{
                 //   return 0;
                    //如果有第二种比较方式 按name排序
                    //return this.namecompareTo(p.name);(正序)
                    //return -this.namecompareTo(p.name);(倒序)
                }
            //方式二
            // return Double.compare(this.age,p.age);
            }
                throw new RuntimeException("输入的类型不一致!");
        }
    }

    2.Comparator

    //自定义比较器
    public class ComparatorTest {
        @Test
        public void test1(){
            String[] str = new String[]{"AA","CC","KK","MM","GG","JJ","DD"};
            Arrays.sort(str);
            System.out.println(Arrays.toString(str));
        }
    
        @Test
        public void test2(){
            String[] str = new String[]{"AA","CC","KK","MM","GG","JJ","DD"};
            Arrays.sort(str, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    if (o1 instanceof String && o2 instanceof String){
                        String s1 = (String)o1;
                        String s2 = (String)o2;
    
                        //return s1.compareTo(s2);正序
    
                        return  -s1.compareTo(s2);//倒序
                    }
                    throw new   RuntimeException("输入的类型不一致!");
                }
            });
    
            System.out.println(Arrays.toString(str));//[MM, KK, JJ, GG, DD, CC, AA]
        }
    }
  • 相关阅读:
    nodejs 获取客户端 ip 地址
    如何使用 nvm-windows 管理 nodejs 版本
    redis 环境搭建
    利用 ssh 传输文件
    如何在 Centos7 中安装 gcc
    如何在 Centos7 中安装 nginx
    django迁移model到别的app中
    ssl生成证书
    pip安装mysql报错 ld: library not found for -lssl
    mac重置蓝牙模块
  • 原文地址:https://www.cnblogs.com/Anonymity-zhang/p/14362396.html
Copyright © 2020-2023  润新知