您当前的位置: 首页 >  Java

wespten

暂无认证

  • 0浏览

    0关注

    899博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

深入学习java源码之 Arrays.sort()与Arrays.parallelPrefix()

wespten 发布时间:2019-01-06 22:32:29 ,浏览量:0

深入学习java源码之 Arrays.sort()与Arrays.parallelPrefix()

Comparator接口

能对不同类型的对象进行排序(当然排序依据还是基本类型),也不用自己实现排序算法,用起来很方便。

对任意类型集合对象进行整体排序,排序时将此接口的实现传递给Collections.sort方法或者Arrays.sort方法排序。 实现int compare(T o1, T o2);方法,返回正数,零,负数各代表大于,等于,小于。

public class Test {

    private final class CompareName implements Comparator {
        boolean is_Ascend;

        public CompareName(boolean b) {
            // TODO Auto-generated constructor stub
            is_Ascend = b;
        }

        @Override
        public int compare(Milan o1, Milan o2) {
            // TODO Auto-generated method stub
            if (is_Ascend)
                return o1.p_Name.compareTo(o2.p_Name);
            else
                return o2.p_Name.compareTo(o1.p_Name);
        }
    }

    private final class CompareId implements Comparator {
        boolean is_Ascend;

        public CompareId(boolean b) {
            // TODO Auto-generated constructor stub
            is_Ascend = b;
        }

        @Override
        public int compare(Milan o1, Milan o2) {
            // TODO Auto-generated method stub
            int a, b;
            if (is_Ascend) {
                a = o1.p_Id;
                b = o2.p_Id;
            } else {
                a = o2.p_Id;
                b = o1.p_Id;
            }

            if (a > b)
                return 1;
            else if (a == b)
                return 0;
            else
                return -1;
        }
    }

    public static void main(String[] args) {
        Test t = new Test();

        Milan p1 = new Milan(1, "Dida");
        Milan p2 = new Milan(2, "Cafu");
        Milan p3 = new Milan(3, "Maldini");
        Milan P4 = new Milan(6, "Baresi");
        Milan p5 = new Milan(9, "Inzaghi");
        Milan P6 = new Milan(10, "Costa");

        List mList = new ArrayList();
        mList.add(p1);
        mList.add(P6);
        mList.add(P4);
        mList.add(p2);
        mList.add(p5);
        mList.add(p3);

        System.out.println("初始顺序");
        System.out.println("姓名  |   号码");
        for (Milan p : mList) {
            System.out.println(p.p_Name + " |   " + p.p_Id);
        }
        System.out.println();
        System.out.println("对号码降序");
        System.out.println("姓名  |   号码");

        Collections.sort(mList, t.new CompareId(false));

        for (Milan p : mList) {
            System.out.println(p.p_Name + " |   " + p.p_Id);
        }
        System.out.println();
        System.out.println("对姓名升序");
        System.out.println("姓名  |   号码");

        Collections.sort(mList, t.new CompareName(true));

        for (Milan p : mList) {
            System.out.println(p.p_Name + " |   " + p.p_Id);
        }
    }

}

 

Comparator

关注
打赏
1665965058
查看更多评论
立即登录/注册

微信扫码登录

0.0404s