返回顶部
首页 > 资讯 > 后端开发 > Python >java中如何对arrayList按数字大小逆序排序
  • 322
分享到

java中如何对arrayList按数字大小逆序排序

javaarrayListarrayList数字大小逆序排序arrayList逆序排序 2023-05-15 11:05:58 322人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录对arrayList按数字大小逆序排序arrayList实现自定义排序ArrayList排序使用原理分析总结对arrayList按数字大小逆序排序 对集合排序要用Collecti

对arrayList按数字大小逆序排序

集合排序要用Collections.sort方法,由于默认它是按从小到大的排序的,如果我们需要逆序的,那么就需要实现Comparator接口的compare方法来完成自定义排序。

需要注意Comparator是接口,new Comparator(){} 的作用是new了一个实现接口的匿名类,开发人员需要在匿名类内部(花括号内)实现你那个接口。

代码

public static void main(String[] args) {
        Integer[] nums = {1,5,34,6,8,7,33};
        ArrayList<Integer> numberList = new ArrayList<>();
        Collections.addAll(numberList, nums);

        // 排序前
        System.out.println("逆序前 numberList " + numberList);

        // 排序后
        ArrayList<Integer> copyList = new ArrayList<>(numberList);
        Collections.sort(copyList, new Comparator<Integer>() {
            @Override
            public int compare(Integer num1, Integer num2) {
                if (num1 > num2) {
                    return -1;
                } else {
                    return 1;
                }
            }
        });
        System.out.println("逆序后 copyList " + copyList);
        // 原列表不变
        System.out.println("逆序后 numberList " + numberList);
    }

arrayList实现自定义排序

ArrayList排序使用

ArrayList中存在sort排序方法,只要你实现了Comparator的接口,按照你自己的排序业务进行实现,你只要告诉这个接口按照什么类型进行排序就OK了。这种方式类似于设计模式中的策略模式,把流程划分好,具体的业务逻辑由用户指定

代码实现:

public class ComparatorTest {
    public static void main(String[] args) {
        baseTypeSort();
        referenceTypeSort();

    }

    private static void referenceTypeSort() {
        Person p1 = new Person(10);
        Person p2 = new Person(16);
        Person p3 = new Person(1);
        Person p4 = new Person(8);
        Person p5 = new Person(100);

        List<Person> people = new ArrayList<>();
        people.add(p1);
        people.add(p2);
        people.add(p3);
        people.add(p4);
        people.add(p5);
        System.out.println("排序前:" + people);
        people.sort((o1, o2) -> o2.getAge() - o1.getAge());
        System.out.println("降序:" + people);
        Collections.sort(people, (o1, o2) -> o1.getAge() - o2.getAge());
        System.out.println("升序:" + people);
        people.sort(Comparator.comparing(Person::getAge));
        System.out.println("comparing写法升序:" + people);
        people.sort(Comparator.comparing(Person::getAge).reversed());
        System.out.println("comparing写法降序:" + people);
    }

    private static void baseTypeSort() {
        // 初始化一组数据,这组数据可以是任意对象
        int[] data = {7, 5, 1, 2, 6, 8, 10, 12, 4, 3, 9, 11, 13, 15, 16, 14};
        // 构建成一个集合
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < data.length; i++) {
            list.add(data[i]);
        }
        System.out.println("排序前:" + list);
        //逆序
        list.sort((o1, o2) -> o2 - o1);
        System.out.println("降序:" + list);
    }
}

由于现在主流jdk都升级到1.8以上,所以使用lamda表达式实现,这里简单介绍一下lamda表达式使用:

  • 以逗号分隔,以()关闭的形参:(Integer m, Integer n)
  • 箭头标记:->
  • 主体部分则是一个单表达式或者声明代码块。
  • 如下是单表达式形式:
(o1, o2) -> o2.getAge() - o1.getAge()

注意点:

  • Java7,list并没有sort方法,请使用Collections.sort(),Collections.sort()传入ArrayList和自己实现Commparator接口的类的对象,实现自定义排序
  • 使用Collections.sort()传入ArrayList和自己实现Commparator接口的类的对象,实现自定义排序
  • 使用List.sort()传入自己实现Commparator接口的类的对象,实现自定义排序
  • Comparator返回值在jdk1.7、jdk1.8里必须是一对相反数,可以使用差值简化写法,正数表示升序,负数表示降序
  • ArrayList中的sort排序是采用归并排序的,当数组中的数据非常大的时候,会采用几次归并来完成排序.具体采用几次归并,会通过相关方法进行计算

原理分析

Collections.sort方法底层就是调用的Arrays.sort方法,而Arrays.sort底层调用了一个非常优秀的工程排序实现算法:TimSort,Timsort是一种结合了归并排序和插入排序的混合算法,由Tim Peters在2002年提出,并且已经成为python 2.3版本以后内置排序算法。

在数据量小的时候使用插入排序,虽然插入排序的时间复杂度是O(n^2),但是它的常数项比较小,在数据量较小的时候具备较快的速度。

在数据量较大的时候,如果是基本类型,使用快速排序,如果是引用类型使用归并排序。这是因为快速排序是不稳定的,而插入排序和归并排序都是稳定性排序。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java中如何对arrayList按数字大小逆序排序

本文链接: https://lsjlt.com/news/208922.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java中如何对arrayList按数字大小逆序排序
    目录对arrayList按数字大小逆序排序arrayList实现自定义排序ArrayList排序使用原理分析总结对arrayList按数字大小逆序排序 对集合排序要用Collecti...
    99+
    2023-05-15
    java arrayList arrayList数字大小逆序排序 arrayList逆序排序
  • java中怎么对arrayList按数字大小逆序排序
    这篇文章主要介绍“java中怎么对arrayList按数字大小逆序排序”,在日常操作中,相信很多人在java中怎么对arrayList按数字大小逆序排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java中...
    99+
    2023-07-06
  • Java中怎么对 ArrayList排序
    本篇文章给大家分享的是有关Java中怎么对 ArrayList排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。排序字符串对象的 ArrayList考虑一个 ArrayList...
    99+
    2023-06-17
  • PHP如何对数组按照键名逆向排序
    这篇文章将为大家详细讲解有关PHP如何对数组按照键名逆向排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 PHP对数组按键名逆向排序 对数组按键名进行逆向排序是PHP中一项有用的操作,它允许开发人员按...
    99+
    2024-04-02
  • python字典如何按值的大小排序
    要按照字典的值进行排序,可以使用sorted()函数和lambda函数。首先,使用sorted()函数,指定key参数为一个lamb...
    99+
    2023-10-12
    python
  • java如何对arraylist中元素进行排序
    这篇文章主要介绍了java如何对arraylist中元素进行排序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。rrayList中的元素进行排序,主要考查的是对util包中的C...
    99+
    2023-05-30
    java arraylist
  • PHP对数组按照键名逆向排序
    这篇文章将为大家详细讲解有关PHP对数组按照键名逆向排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 对数组按照键名逆向排序 PHP 中提供了多种方法来对数组按照键名进行逆向排序。以下是两种最...
    99+
    2024-04-02
  • mysql按照数字大小排序的方法
    这篇文章主要介绍mysql按照数字大小排序的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql可以按照数字大小排序。MySQL提供了“ORDER BY”关键字来对查询结果中...
    99+
    2024-04-02
  • PHP如何对数组逆向排序
    这篇文章将为大家详细讲解有关PHP如何对数组逆向排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP数组逆序排序 简介 PHP 提供了多种方法来对数组进行逆序排序。本指南将介绍四种常见的方法,包括使用...
    99+
    2024-04-02
  • 如何使用PHP中的krsort()函数按键名对数组进行逆序排序
    如何使用PHP中的krsort()函数按键名对数组进行逆序排序,需要具体代码示例PHP中的数组是一种非常有用的数据结构,它可以存储多个值,并根据键名进行访问和操作。在PHP中,我们可以使用krsort()函数对数组按照键名进行逆序排序。本文...
    99+
    2023-11-18
    PHP 逆序排序 krsort()
  • Java如何实现ArrayList排序
    这篇文章主要介绍“Java如何实现ArrayList排序”,在日常操作中,相信很多人在Java如何实现ArrayList排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现ArrayList排序...
    99+
    2023-06-30
  • 使用PHP中的arsort()函数对数组按值进行逆序排序
    标题:PHP中使用arsort()函数对数组按值进行逆序排序文章正文:在PHP中,数组是非常常用的数据结构。有时候我们需要对数组进行排序,特别是按值进行排序。PHP提供了一系列的排序函数来满足我们的需求,其中之一就是arsort()函数。a...
    99+
    2023-11-18
    PHP arsort() 逆序排序
  • PHP:按值对数组排序,保留键并进行逆序
    php 中按值对数组排序并进行逆序,可使用以下步骤:按值升序排序:使用 asort($array) 函数。按值降序排序:使用 arsort($array) 函数。 PHP:按值对数组排...
    99+
    2024-05-04
    php 数组排序
  • Java实现按照大小写字母顺序排序的方法
    本文实例讲述了Java实现按照大小写字母顺序排序的方法。分享给大家供大家参考,具体如下:这里排序需要得到的结果按字母顺序。如:a-----z...import java.util.*;public class z { //上边是按大写在后的...
    99+
    2023-05-30
    java 字母 排序
  • php如何把数组中几个值按大小排序
    今天小编给大家分享一下php如何把数组中几个值按大小排序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php把数组中几个值按...
    99+
    2023-07-05
  • Java如何实现数字逆序
    目录Java实现数字逆序Java逆序输出问题总结Java实现数字逆序 输入一个不多于5位的正整数,逆序后输出结果: 具体代码如下: package com.jasmyn.demo;...
    99+
    2023-05-15
    Java数字逆序 Java逆序 Java数字
  • java如何将字符串从小到大排序
    可以使用Java中的Arrays类的sort方法来实现字符串数组的排序,具体步骤如下:1. 创建一个字符串数组,存储待排序的字符串。...
    99+
    2023-09-26
    java
  • python如何按照字典的值的大小进行排序
    这篇文章主要介绍了python如何按照字典的值的大小进行排序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如何按照字典的值的大小进行排序我们知道,字典的本质是哈希表,本身是无...
    99+
    2023-06-27
  • jquery如何对数字排序
    使用jquery对数字进行排序的方法:1.新建html项目,引入jquery;2.创建数组,并赋值;3.利用if判断语句比较数组中数字大小;4.使用sort()方法对数字排序;具体步骤如下:首先,新建一个html项目,并在项目中引入jque...
    99+
    2024-04-02
  • PHP如何对数组中的值进行大小排序
    PHP是一种常用的服务器端脚本语言,广泛应用于网站开发和数据处理领域。在PHP中,对数组中的值进行大小排序是很常见的需求。通过使用内置的排序函数,可以很方便地实现对数组的排序操作。下面...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作