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()’ 在排序方面如何有用。

更新于:2023年5月12日

231 次浏览

启动您的职业生涯

完成课程后获得认证

开始学习
广告