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));

    }
    }

     
  • 相关阅读:
    div 内容自动换行
    发邮件
    asp gridview
    授权 注册
    asp grid 增加和删除行数据
    计算两个日期相差的天数
    sql 删除数据库表 外键
    装完Centos7提示Initial setup of CentOS Linux 7 (core)(转载)
    如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
    centos7 安装拼音输入法(转载)
  • 原文地址:https://www.cnblogs.com/lansor/p/2545649.html
Copyright © 2011-2022 走看看