• ArrayList.sort & Collections.sort


    有关于sort方法我在考试中比较着急,想要去用ArrayList.sort结果发现报错

    在搜索sort方法时众说纷纭,于是紧急用了Collections.sort()

    现在重新整理目前用到的sort方法的实现方式:

    1.Collections.sort()

    Collections和Collection是不一样的,Collection是List、Set、Queue的父类,这个一定要清楚,不要认错了还觉得调用的是Collection父类里的静态方法

    Collections不属于集合框架,是单独的工具类

    列举一下常用方法:

    void reverse(List list)//反转

    void shuffle(List list)//随机排序

    void sort(List list)//按自然排序的升序排序

    void sort(List list, Comparator c)//定制排序,由Comparator控制排序逻辑

    void swap(List list, int i , int j)//交换两个索引位置的元素

    void rotate(List list, int distance)//旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面。

    使用时是Collections.方法名进行的操作,是静态方法,参数是List对象

    2.ArrayList.sort()

    确切来说,应该叫ArrayList的sort()方法,因为这不是静态方法,ArrayList对象中怎么写的,子类中怎么重写的就怎么使用

    如animals.sort(),在“唐城动物园”项目中有一个ArrayList对象animals,就可以这么使用

    1 public void aniSort(){
    2         animals.sort((a,b)->{
    3                if(a.getAge()>b.getAge())
    4                    return 1;
    5                else
    6                    return -1;
    7                });
    8     }

    类比:而如果此处用Collections.sort()方法

    public void aniSort(){
            Collections.sort(animals,(a,b)->{
                   if(a.getAge()>b.getAge())
                       return 1;
                   else
                       return -1;
                   });
        }

    详解:

    Collections工具类里的方法实际还是对List对象操作,和我们这样没有本质区别

    public static <T extends Comparable<? super T>> void sort(List<T> list) {
            list.sort(null);
        }
    public static <T> void sort(List<T> list, Comparator<? super T> c) {
            list.sort(c);
        }

    无非内部还是我们的List对象.sort()方法,其实Collections就是这样封装好的大量方法,内部实现还是用到的对应类的方法

    只不过这样用起来是Collections.方法名,看起来比较规整,起帮助作用而已。

  • 相关阅读:
    OpenGL3:幼儿园篇 第三章 几何变换
    OpenCV2:应用篇 三维重建
    Word绑定博客园
    Android大学课件SQLite3 数据库操作
    Android Studio导入jar包
    安卓Android基础四天
    学习Android过程中遇到的未解决问题(个人笔记,细节补充,随时更新)
    学习Android过程中遇到的问题及解决方法——电话监听
    学习Android过程中遇到的问题及解决方法——网络请求
    安卓Android基础第三天——数据库,ListView
  • 原文地址:https://www.cnblogs.com/exigeslover/p/11961332.html
Copyright © 2020-2023  润新知