How to Sort ArrayList in Java2025年4月6日 | 阅读 7 分钟 在 Java 中,Collection 是一个框架,它提供了接口(Set、List、Queue 等)和类(ArrayList、LinkedList 等)来存储对象的组。这些类以无序的方式存储数据。有时我们需要以有序的方式排列数据,这称为排序。排序可以有两种方式,即升序或降序。 在本节中,我们将学习如何在 ArrayList 中按升序和降序排序。 ArrayList在 Java 中,ArrayList 是 Collections 框架的一个类,它定义在 java.util 包中。它继承了 AbstractList 类。它动态地存储元素。ArrayList 的优点是它没有大小限制。它比传统的数组更灵活。它可能包含重复的元素。由于它实现了 List 接口,我们还可以使用 List 接口的所有方法。 我们可以通过两种方式对 ArrayList 进行升序和降序排序。Collections 类提供了两种方法来排序 Java 中的 ArrayList。
Collections.sort() 方法可以使用 Collections 类的 sort() 方法对 ArrayList 进行排序。它接受一个 ArrayList 对象作为要排序的参数,并返回一个根据其元素自然顺序排序的 ArrayList。 语法 请记住: ArrayList 中的所有元素都必须是可相互比较的,否则会抛出 ClassCastException。这里,可相互比较意味着列表必须具有相同类型的元素。例如,考虑以下代码片段 在上面的示例中,我们看到一个列表有四个元素,其中三个是 String 类型,一个 Integer 类型。三个 String 类型的元素可以相互比较,但 Integer 类型的元素与其他三个不可比较。因此,列表中必须具有相同类型的元素。 Collections.reverseOrder() 方法如果我们想按降序对 ArrayList 进行排序,Java Collections 类提供了 reverseOrder() 方法。它允许我们以反向词典顺序对 ArrayList 进行排序。 语法 它返回一个比较器,该比较器对实现了 Comparable 接口的对象的集合施加自然顺序的相反顺序。 请记住,我们不直接调用 reverseOrder() 方法。我们将其与 Collection.sort() 方法一起使用,如下所示。 因此,ArrayList 的降序排序分为两步:首先,ArrayList 按升序对数据进行排序,然后,使用 reverseOrder() 方法反转排序后的数据。 让我们创建按升序排序 ArrayList 的程序。 按升序排序 ArrayList在下面的示例中,我们创建了一个 String 类型的 ArrayList 并向其中添加了一些元素。之后,我们调用 Collections 类的 sort() 方法,并将 ArrayList 类的对象(即 list)传递进去,从而按升序对元素进行排序。 // 文件名: SortArrayListExample1.java 输出 Before Sorting: [Volkswagen, Toyota, Porsche, Ferrari, Mercedes-Benz, Audi, Rolls-Royce, BMW] After Sorting: [Audi, BMW, Ferrari, Mercedes-Benz, Porsche, Rolls-Royce, Toyota, Volkswagen] 让我们来看另一个对 Integer 类型 ArrayList 进行排序的示例。 SortArrayListExample2.java 输出 ArrayList Before Sorting: 55 34 98 67 39 76 81 ArrayList After Sorting: 34 39 55 67 76 81 98 按降序排序 ArrayList在下面的示例中,我们创建了一个 String 类型的 ArrayList 并向其中添加了一些元素。之后,我们调用 reverseOrder() 方法以及 Collections 类的 sort() 方法,并将 ArrayList 类的对象(即 list)传递进去,从而按降序对元素进行排序。 SortArrayListExample3.java 输出 Before Sorting: [Data Science, Testing, C#, Basic Language, UML, Algorithms, Computer Networks, Python] After Sorting: [UML, Testing, Python, Data Science, Computer Networks, C#, Basic Language, Algorithms] SortArrayListExample4.java 输出 ArrayList Before Sorting: 566 230 123 110 689 12 95 ArrayList After Sorting: 689 566 230 123 110 95 12 实现 Comparable 接口如果您有一个自定义类,并且想对 ArrayList 中的该类对象进行排序,您可以使该类实现 Comparable 接口。此接口要求实现 compareTo() 方法,该方法定义对象的自然顺序。 这是一个使用 Comparable 接口对自定义对象列表进行排序的示例 文件名:ImplementingCompartable.java 输出 Sorted ArrayList: [Student{name='Alice', age=20}, Student{name='Bob', age=22}, Student{name='Charlie', age=21}] 使用 Comparator 接口如果您想根据除自然顺序以外的标准对对象进行排序,可以使用 Comparator 接口。此接口要求实现 compare() 方法,该方法根据指定标准比较两个对象。 这是一个使用 Comparator 对自定义对象列表进行排序的示例 文件名:UsingComparator.java 输出 Sorted ArrayList: [Student{name='Alice', age=20}, Student{name='Bob', age=22}, Student{name='Charlie', age=21}] 结论在 Java 中排序 ArrayList 是一项基本操作,可以通过各种技术实现。无论我们处理内置类型还是自定义对象,Java 都提供了灵活的方法来高效地排序集合。通过理解这些技术,我们可以有效地管理和操作 Java 程序中的数据。 Java 排序 ArrayList 选择题1. 在 Java 中,使用哪种方法对 ArrayList 进行排序?
答案:b 解释: Collections.sort() 方法用于在 Java 中对 ArrayList 进行排序。如果元素实现了 Comparable 接口,它会按自然顺序对它们进行排序。 2. 如何根据特定字段对自定义对象的 ArrayList 进行排序?
答案:c 解释: 我们可以通过在自定义类中实现 Comparable 接口或使用自定义 Comparator 来按特定字段对自定义对象的 ArrayList 进行排序。 3. 以下代码的输出是什么?
答案:b 解释: 该代码将 ArrayList 按升序排序,结果为 [1, 1, 3, 4, 5, 9]。 4. 如何对字符串的 ArrayList 进行排序,忽略大小写差异?
答案:a 解释: 要对字符串的 ArrayList 进行排序,同时忽略大小写差异,您可以使用带有自定义 Comparator 的 Collections.sort(),该 Comparator 实现不区分大小写的比较。 5. 哪个 Comparator 方法用于按相反顺序排序?
答案:a 解释: Collections.reverseOrder() 方法返回一个按相反顺序对元素进行排序的 Comparator。 下一个主题Java ArrayList |
() 和 Line() 之间的区别 在 Java 中,java.util 包中提供的 Scanner 类是获取 int、double 和字符串等原始数据类型输入的最简单方法之一。在竞技编程中,时间是一个限制因素,使用 Scanner 类是...
阅读 4 分钟
目标是按垂直之字形遍历顺序获得二叉树中各节点的值。树的垂直之字形遍历描述如下:按从右到左的顺序列出第一层的元素;如果没有剩余部分,则移动...
阅读 6 分钟
在 Java 中,String.valueOf() 方法是一个重载的静态方法,它有助于将各种数据类型(包括对象、布尔值、浮点数、双精度数、长整型和整数)转换为它们的字符串表示形式。它使得字符串操作、日志记录和有效显示数据变得容易。重载...
5 分钟阅读
在本节中,我们将编写 Java 程序来确定一个数的幂。要获得一个数的幂,请将其乘以其指数。示例:假设底数为 5,指数为 4。要获得一个数的幂,请将其乘以...
阅读 6 分钟
在不断发展的技术格局中,自然语言处理 (NLP) 在弥合人类交流与计算机理解之间的差距方面发挥着至关重要的作用。Java 是一种通用且广泛使用的编程语言,它使开发人员能够通过各种库和框架来利用 NLP 的潜力……
阅读 3 分钟
要从给定的序列创建最小数字,您必须了解序列如何定义要排列的数字模式。通常,序列包含诸如“I”(表示递增)和“D”(表示递减)之类的字符。目标是按顺序排列数字...
阅读 6 分钟
持续集成(CI)和持续交付(CD)已成为现代软件开发实践的重要组成部分。这些方法旨在加强协作、提高代码质量并加速软件交付。Java 作为构建健壮且可扩展应用程序的常用编程语言,在...
阅读 2 分钟
在 Java 中,集合可以定义为一个用于存储和操作一组对象的框架。集合在 Java 中管理和组织对象集方面起着重要作用。让我们详细了解集合的用途和优点...
7 分钟阅读
队列是另一种线性数据结构,它像其他数据结构一样用于存储元素,但方式有所不同。简单来说,我们可以说队列是 Java 编程语言中的一种数据结构...
阅读 10 分钟
在 Java 编程的世界中,有许多场景可能需要计算给定字符串中不同字符的数量。无论我们是开发文本分析工具、文字游戏,还是任何处理文本数据的应用程序,了解如何……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India