zoukankan      html  css  js  c++  java
  • 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]
        }
    }
  • 相关阅读:
    UIKit框架-高级控件:2.UIScrollView的单图分页设置
    欢迎使用CSDN-markdown编辑器
    UIKit框架-高级控件:1.UIScrollView的基本认识
    UIKit基础:18-MVC模式, 代理消息传递机制, 计时器机制
    UIKit基础:17-基础控件的总结
    UIKit基础:16-小游戏之舒尔特表
    UIKit基础:15-与电脑玩剪刀石头布
    iOS之 Category 属性 的理解
    学习方法,特别对于新手
    iOS 之GCD串行和并发队列的理解
  • 原文地址:https://www.cnblogs.com/Anonymity-zhang/p/14362396.html
Copyright © 2011-2022 走看看