您的位置:首页 > 其它

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

2017-08-30 15:40 507 查看


声明:本文纯属个人随手笔记,如果对您有参考价值我十分开心,如果有存在错误,或者有更好的解决办法也麻烦您留言告诉我,大家共同成长,切勿恶言相。 欢迎加入资源共享QQ群:275343679,一起发现知识、了解知识、学习知识、分享知识。

个人网站:www.itlantian.top 
www.blueskyui.cn
================================================================================ 
/** 

* 输入一个List集合,给集合里的数据排序,按照正序或倒序打印出集合里的所有数据。 

* 例如输入集合[15,123,10,9,3] 

* 正序打印 :3,9,10,15,123 

* 倒序打印 :123,15,10,9,3 

* 思路 

* 通过Collection.sort()方法中的自定义比较器实现。若num1>num2,则说明num1满足要求。 

*/

常规的排序方式:

    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

2

3

4

5

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

自定义的排序方式:

    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

1

2

3

4

5

6

7

8

9

10

11

12

总结:

使用Collections.sort(List<T>,Comparator<T>),可以做到给特殊的需求排序。首先我们需要实现Comparator接口,重写public int compare(Object o1, Object o2) 方法。上述的案例里,T是String,我们在获取数据时,就能直接得到String数据。 

已知List<String>里的内容是整数的情况下,我们把数据转化为整数类型,然后用整数去比较,最后得出排序结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐