美文网首页
201015:Comparator排序-Java8新特性(待完善

201015:Comparator排序-Java8新特性(待完善

作者: 弹钢琴的崽崽 | 来源:发表于2020-10-15 20:42 被阅读0次

一. 使用Collections.sort(List<T>,Comparator<T>)List<String>排序

常规的排序方式

public void printListStringSort(){
    List<String> list = new ArrayList<String>();
    list.add("15");
    list.add("123");
    list.add("10");
    list.add("9");
    list.add("3");

    //常规的排序
    Collections.sort(list);

    //打印出数据
    for (String str : list) {
        System.out.println( str );
    }
}

输出:

10
123
15
3
9

总结:输出的结果不是我们想要的,默认排序的是按照首字符的大小排序

1. 自定义的排序方式:

public void printListStringSort(){
    List<String> list = new ArrayList<String>();
    list.add("15");
    list.add("123");
    list.add("10");
    list.add("9");
    list.add("3");

    System.out.println( "---------------升序排列----------------" );
    // 升序排列
    Collections.sort(list, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            int num1 = Integer.parseInt(o1);
            int num2 = Integer.parseInt(o2);
            if (num1 > num2) {
                return 1;
            } else if (num1 < num2) {
                return -1;
            } else {
                return 0;
            }
        }
    });

    for (String str : list) {
        System.out.println(str);
    }

    System.out.println( "---------------降序排列----------------" );
    // 降序排列
    Collections.sort(list, new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            int num1 = Integer.parseInt(o1);
            int num2 = Integer.parseInt(o2);
            if (num1 < num2) {
                return 1;
            } else if (num1 > num2) {
                return -1;
            } else {
                return 0;
            }
        }
    });

    for (String str : list) {
        System.out.println(str);
    }
}

输出:

---------------升序排列----------------
3
9
10
15
123
---------------降序排列----------------
123
15
10
9
3

总结:输出的结果是我们想要的结果

2. 总结:

使用Collections.sort(List,Comparator),可以做到给特殊的需求排序。首先我们需要实现Comparator接口,重写public int compare(Object o1, Object o2) 方法。上述的案例里,T是String,我们在获取数据时,就能直接得到String数据。
已知List里的内容是整数的情况下,我们把数据转化为整数类型,然后用整数去比较,最后得出排序结果。

二. java8新特性(待续)

参考文章

相关文章

网友评论

      本文标题:201015:Comparator排序-Java8新特性(待完善

      本文链接:https://www.haomeiwen.com/subject/wonopktx.html