• comparable和comparator


    java中提供了2中比较方式。第一种是实现java.util.Comparable接口。

    public class CompType implements Comparable<Object> {
        int i,j;
        public CompType(int a,int b){
            i=a;
            j=b;
        }
        public String toString(){
            return "[i="+i+",j="+j+"]";
        }
        @Override
        public int compareTo(Object o) {
            int rvi=((CompType)o).i;
            return (i<rvi?-1:(i==rvi?0:1));
        }
        private static Random random=new Random();
        public static Generator generator(){
            return new Generator(){
                public Object next(){
                    return new CompType(random.nextInt(100),random.nextInt(100));
                }
            };
        }
        public static void main(String[] args) {
            CompType[] ct=new CompType[10];
            Arrays2.fill(ct, generator());
            System.out.println("before sorting ct:"+Arrays.asList(ct));
            Arrays.sort(ct);
            System.out.println("after sorting ct:"+Arrays.asList(ct));
        }
    }

    第二种是使用比较器java.util.Comparator.这里使用了策略设计模式。通过策略模式,将会发生变化的代码包装在类中(策略对象),将策略对象交给保持不变的代码,后者使用

    此策略实现它的算法。在这里,可以为不同的比较方式生成不同的对象,将他们用在同样的排序程序中。

    public class AlphabeticComparator implements Comparator {
        @Override
        public int compare(Object o1, Object o2) {
            return o1.toString().toLowerCase().compareTo(o2.toString().toLowerCase());
        }
    }
    public class AlphabeticSorting {
        @SuppressWarnings("unchecked")
        public static void main(String[] args) {
            String[] sa=new String[10];
            Arrays2.fill(sa, new Arrays2.RandomStringGenerator(5));
            System.out.println("before sorting sa:"+Arrays.asList(sa));
            Arrays.sort(sa,new AlphabeticComparator());
            System.out.println("after sorting sa:"+Arrays.asList(sa));
        }
    }

    public class Reverse {
    public static void main(String[] args) {
    String[] a={"a","b","c"};
    System.out.println("before sorting a:"+Arrays.asList(a));
    Arrays.sort(a,Collections.reverseOrder());
    System.out.println("after reverse sorting a:"+Arrays.asList(a));

    }
    }

     
  • 相关阅读:
    HDU 2236 无题Ⅱ
    Golden Tiger Claw(二分图)
    HDU 5969 最大的位或 (思维,贪心)
    HDU 3686 Traffic Real Time Query System (图论)
    SCOI 2016 萌萌哒
    Spring Boot支持控制台Banner定制
    构建第一个Spring Boot程序
    Spring Boot重要模块
    Java fastjson JSON和String互相转换
    BCompare 4 Windows激活方法【试用期30天重置】
  • 原文地址:https://www.cnblogs.com/lansor/p/2545649.html
Copyright © 2020-2023  润新知