iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java中怎么对arrayList按数字大小逆序排序
  • 107
分享到

java中怎么对arrayList按数字大小逆序排序

2023-07-06 01:07:43 107人浏览 独家记忆
摘要

这篇文章主要介绍“java中怎么对arrayList按数字大小逆序排序”,在日常操作中,相信很多人在java中怎么对arrayList按数字大小逆序排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java中

这篇文章主要介绍“java中怎么对arrayList按数字大小逆序排序”,在日常操作中,相信很多人在java中怎么对arrayList按数字大小逆序排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java中怎么对arrayList按数字大小逆序排序”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    对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),但是它的常数项比较小,在数据量较小的时候具备较快的速度。

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

    到此,关于“java中怎么对arrayList按数字大小逆序排序”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

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

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

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

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • java中怎么对arrayList按数字大小逆序排序
      这篇文章主要介绍“java中怎么对arrayList按数字大小逆序排序”,在日常操作中,相信很多人在java中怎么对arrayList按数字大小逆序排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java中...
      99+
      2023-07-06
    • java中如何对arrayList按数字大小逆序排序
      目录对arrayList按数字大小逆序排序arrayList实现自定义排序ArrayList排序使用原理分析总结对arrayList按数字大小逆序排序 对集合排序要用Collecti...
      99+
      2023-05-15
      java arrayList arrayList数字大小逆序排序 arrayList逆序排序
    • Java中怎么对 ArrayList排序
      本篇文章给大家分享的是有关Java中怎么对 ArrayList排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。排序字符串对象的 ArrayList考虑一个 ArrayList...
      99+
      2023-06-17
    • PHP对数组按照键名逆向排序
      这篇文章将为大家详细讲解有关PHP对数组按照键名逆向排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 对数组按照键名逆向排序 PHP 中提供了多种方法来对数组按照键名进行逆向排序。以下是两种最...
      99+
      2024-04-02
    • java怎么按字典顺序排序
      在Java中,可以使用Collections.sort()方法来对字符串列表进行按字典顺序排序。 首先,将字符串列表存储在一个Arr...
      99+
      2023-10-24
      java
    • mysql按照数字大小排序的方法
      这篇文章主要介绍mysql按照数字大小排序的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql可以按照数字大小排序。MySQL提供了“ORDER BY”关键字来对查询结果中...
      99+
      2024-04-02
    • PHP:按值对数组排序,保留键并进行逆序
      php 中按值对数组排序并进行逆序,可使用以下步骤:按值升序排序:使用 asort($array) 函数。按值降序排序:使用 arsort($array) 函数。 PHP:按值对数组排...
      99+
      2024-05-04
      php 数组排序
    • 使用PHP中的arsort()函数对数组按值进行逆序排序
      标题:PHP中使用arsort()函数对数组按值进行逆序排序文章正文:在PHP中,数组是非常常用的数据结构。有时候我们需要对数组进行排序,特别是按值进行排序。PHP提供了一系列的排序函数来满足我们的需求,其中之一就是arsort()函数。a...
      99+
      2023-11-18
      PHP arsort() 逆序排序
    • Java中arraylist排序怎么实现
      Java中可以使用Collections.sort()方法对ArrayList进行排序,具体实现步骤如下:1. 首先导入java.u...
      99+
      2023-09-14
      Java arraylist
    • Java实现按照大小写字母顺序排序的方法
      本文实例讲述了Java实现按照大小写字母顺序排序的方法。分享给大家供大家参考,具体如下:这里排序需要得到的结果按字母顺序。如:a-----z...import java.util.*;public class z { //上边是按大写在后的...
      99+
      2023-05-30
      java 字母 排序
    • mysql怎么按实际大小排序
      在mysql中实现按实际大小进行排序的方法首先,在命令行中启动MySQL服务;service mysql start  MySQL服务启动后,在命令行中输入mysql的用户名和密码登录到MySQL;mysql -u root -p登录到My...
      99+
      2024-04-02
    • Golang中Map怎么按照Value大小排序
      这篇文章主要介绍“Golang中Map怎么按照Value大小排序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Golang中Map怎么按照Value大小排序”文章能帮助大家解决问题。起因最近项目中有...
      99+
      2023-06-29
    • Java中怎么对HashMap按键值排序
      本篇文章给大家分享的是有关Java中怎么对HashMap按键值排序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. HashMap存储每对键和值作为一个Entry<K,...
      99+
      2023-06-17
    • php怎么把数组中几个值按大小排序
      php把数组中几个值按大小排序的方法:1、通过“sort($numbers);”函数对数组元素进行升序排序;2、通过“rsort($numbers);”函数对数组元素进行降序排序即可。本教程操作环境:Windows10系统、PHP8.1版、...
      99+
      2023-05-14
      php
    • JAVA中数组怎么从小到大排序
      本篇内容介绍了“JAVA中数组怎么从小到大排序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!快速排序快速排序是一种比较高效的排序算法,采用“...
      99+
      2023-07-05
    • PHP如何对数组按照键名逆向排序
      这篇文章将为大家详细讲解有关PHP如何对数组按照键名逆向排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 PHP对数组按键名逆向排序 对数组按键名进行逆向排序是PHP中一项有用的操作,它允许开发人员按...
      99+
      2024-04-02
    • python字典如何按值的大小排序
      要按照字典的值进行排序,可以使用sorted()函数和lambda函数。首先,使用sorted()函数,指定key参数为一个lamb...
      99+
      2023-10-12
      python
    • Java怎么实现数字逆序
      这篇文章主要讲解了“Java怎么实现数字逆序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么实现数字逆序”吧!Java实现数字逆序输入一个不多于5位的正整数,逆序后输出结果:具体代...
      99+
      2023-07-06
    • java类型大小怎么排序
      在Java中,基本数据类型的大小可以按照以下顺序排列: byte:8位,1字节short:16位,2字节int:32位,4字节lo...
      99+
      2024-03-02
      java
    • java如何对arraylist中元素进行排序
      这篇文章主要介绍了java如何对arraylist中元素进行排序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。rrayList中的元素进行排序,主要考查的是对util包中的C...
      99+
      2023-05-30
      java arraylist
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作