zoukankan      html  css  js  c++  java
  • 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.方法名,看起来比较规整,起帮助作用而已。

  • 相关阅读:
    Writing a progress/status report
    五月
    MEGVII 旷视 Brain++ 平台;天元MegEngine 平台简要分析
    地平线4闪退解决办法;地平线4一启动闪退;Forza Horizon 4 won't start
    [已解决]Adobe Reader中禁用“保存更改”对话框;Adobe pdf 要在关闭前保存更改; 另存为;
    想写点新的东西
    IO测试工具:vdbench
    CUDA 线程ID 计算方式;NVIDIA GPGPU;
    csgo 黑屏闪退,解决方法;
    Simulator 和 Emulator 的相同和不同;
  • 原文地址:https://www.cnblogs.com/exigeslover/p/11961332.html
Copyright © 2011-2022 走看看