zoukankan      html  css  js  c++  java
  • 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));

    }
    }

     
  • 相关阅读:
    WCF简单使用(分别部署在控制台和IIS上)
    WCF系列教程之WCF服务配置工具
    053547
    053546
    053545
    053544
    053543
    053542
    053541
    053540
  • 原文地址:https://www.cnblogs.com/lansor/p/2545649.html
Copyright © 2011-2022 走看看