Java 中已实现 Comparable 接口的数组和包装类的元素排序
Java 提供各种排序算法和方法,可以帮助我们对数组、列表或任何集合进行排序。Comparable 接口是一种额外的方法,当我们想要按自然顺序对自定义对象进行排序时非常有用。例如,它按字典顺序对字符串排序,按数字顺序对数字排序。此接口位于 ‘java.lang’ 包中。
在本文中,我们将创建一个数组和一个数组列表,然后尝试对它们进行排序,以显示数组和包装类已经实现了 Comparable 接口。
数组和包装类的元素排序
我们将使用以下方法对集合和数组的元素进行排序:
Collections.sort() 方法
Collection 接口的 ‘Collections’ 类提供了一个名为 ‘Collections.sort()’ 的静态方法,可以对指定集合(如 ArrayList 或 LinkedList)的元素进行排序。它位于 ‘java.util’ 包中。
语法
Collections.sort( nameOfcollection );
Arrays.sort() 方法
它是 Arrays 类的静态方法,它接受一个参数并相应地对其元素进行排序。此方法可以对数字数据类型(如整数或双精度数)的数组以及字符数组和字符串数组进行排序。
语法
Arrays.sort( nameOfarray);
算法
步骤 1 - 我们将从导入 ‘java.util’ 包开始,以便我们可以使用上面讨论的方法。
步骤 2 - 现在创建一个名为 ‘araySort’ 的方法。在此方法中,声明并初始化一个名为 ‘aray’ 的整数类型数组。接下来,我们将使用内置方法 ‘Arrays.sort()’ 将给定数组的元素按升序排序。然后,使用 for each 循环打印新排序的数组。
步骤 3 - 创建另一个名为 ‘araylistSort()’ 的用户定义方法。在此方法中,我们定义一个包装类 Integer 的数组列表,并使用 ‘add()’ 方法向其中添加元素。现在使用内置方法 ‘Collections.sort()’ 将给定数组列表的元素按升序排序。然后,在 for 循环中使用 ‘get()’ 方法按排序顺序打印数组列表的元素。
步骤 4 - 最后,在 main() 方法中,我们将调用这两个方法来执行它们各自的操作。
示例
import java.util.*; public class Comp1 { public static void araySort() { int aray[] = {9, 3, 56, 0, -2, -6, 2, 1, 80}; System.out.print("The given unsorted array: "); // to print original unsorted array for (int print : aray) { System.out.print(print + " "); } Arrays.sort(aray); // to sort the given array System.out.println(); System.out.print("The newly sorted array: "); // to print newly sorted array for (int print : aray) { System.out.print(print + " "); } System.out.println(); } public static void araylistSort() { // Creating arraylist of Wrapper class Integer ArrayList<Integer> araylist = new ArrayList<Integer>(); // Adding elements in arraylist araylist.add(8); araylist.add(5); araylist.add(2); araylist.add(9); araylist.add(4); araylist.add(7); System.out.println("Elements of the list : "); // loop to iterate through elements for(int i = 0; i < araylist.size(); i++ ) { // to print the elements in the list System.out.print(araylist.get(i) + " "); } Collections.sort(araylist); // to sort the collection System.out.println(); System.out.println("Elements of the newly sorted list : "); for(int i = 0; i < araylist.size(); i++ ) { // to print the elements of newly sorted list System.out.print(araylist.get(i) + " "); } } public static void main(String args[]) { // method call araySort(); araylistSort(); } }
输出
The given unsorted array: 9 3 56 0 -2 -6 2 1 80 The newly sorted array: -6 -2 0 1 2 3 9 56 80 Elements of the list : 8 5 2 9 4 7 Elements of the newly sorted list : 2 4 5 7 8 9
我们创建的方法是静态的,因此我们不需要创建任何对象来调用它们。
结论
您可能已经注意到,我们没有显式实现 Comparable 接口,但我们能够使用 ‘sort()’ 对数组和包装类的元素进行排序。原因是它们隐式地实现了 Comparable 接口。
在本文中,我们了解了这两个内置方法 ‘Arrays.sort()’ 和 ‘Collections.sort()’ 在排序方面如何有用。