Java Arrays parallelSort(T[] a, Comparator<? super T> cmp) 方法



描述

Java Arrays parallelSort(T[]) 方法使用 Comparator 指定的顺序,将指定的对象数组按升序排序。此方法使用并行排序合并算法,该算法将数组分解成子数组,对子数组进行排序,然后合并以得到排序后的数组。

声明

以下是 java.util.Arrays.parallelSort(T[] ,Comparator<? super T> cmp) 方法的声明

public static <T extends Comparable<? super T>> void parallelSort(T[] a,Comparator<? super T> cmp)

参数

a − 要排序的数组。

cmp − 用于确定数组顺序的比较器。空值表示应使用元素的自然顺序。

返回值

此方法不返回任何值。

异常

  • ClassCastException − 如果数组包含无法相互比较的元素(例如,字符串和整数)。

  • IllegalArgumentException − 如果发现数组元素的自然顺序违反了 Comparable 约定。

Java Arrays parallelSort​(T[] array, int fromIndex, int toIndex, Comparator<? super T> cmp) 方法

描述

Java Arrays parallelSort(T[], int fromIndex, int toIndex,Comparator<? super T> cmp) 方法使用 Comparator 指定的顺序,将给定对象数组的指定范围按升序排序。此方法使用并行排序合并算法,该算法将数组分解成子数组,对子数组进行排序,然后合并以得到排序后的数组。

声明

以下是 java.util.Arrays.parallelSort(T[] a, int fromIndex, int toIndex,Comparator<? super T> cmp) 方法的声明

public static <T extends Comparable<? super T>> void parallelSort​(T[] a, int fromIndex, int toIndex,Comparator<? super T> cmp)

参数

  • a − 要排序的数组。

  • fromIndex − 要排序的第一个元素的索引(包含)。

  • toIndex − 要排序的最后一个元素的索引(不包含)。

  • cmp − 用于确定数组顺序的比较器。空值表示应使用元素的自然顺序。

返回值

此方法不返回任何值。

异常

  • IllegalArgumentException − 如果 fromIndex > toIndex

  • ArrayIndexOutOfBoundsException − 如果 fromIndex < 0 或 toIndex > array.length

对象数组排序示例

以下示例显示了 Java Arrays parallelSort(T[], Comparator) 方法的用法。首先,我们创建了一个对象数组,并打印了原始数组。使用 parallelSort() 方法对数组进行排序,然后打印排序后的数组。

package com.tutorialspoint;

import java.util.Arrays;
import java.util.Comparator;

public class ArrayDemo {
   public static void main(String[] args) {
      // initialize unsorted array
      Student arr[] = { new Student(1, "Julie"), new Student(3, "Adam"), new Student(2, "Robert") };

      System.out.print("Original Array: [");
      // print the array
      for (int i = 0; i < arr.length; i++) {
         System.out.print(arr[i] + " ");
      }
      System.out.println("]");
 
      RollNoComparator comparator = new RollNoComparator();
      // sort the array
      Arrays.parallelSort(arr, comparator);

      System.out.print("Sorted Array: [");
      // print the array
      for (int i = 0; i < arr.length; i++) {
         System.out.print(arr[i] + " ");
      }
      System.out.println("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
   
   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }

   public int getRollNo() {
      return rollNo;
   }

   public void setRollNo(int rollNo) {
      this.rollNo = rollNo;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

class RollNoComparator implements Comparator<Student>{

   @Override
   public int compare(Student o1, Student o2) {
      return o1.getRollNo()-o2.getRollNo();
   }	
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Original Array: [[ 1, Julie ] [ 3, Adam ] [ 2, Robert ] ]
Sorted Array: [[ 1, Julie ] [ 2, Robert ] [ 3, Adam ] ]

使用自定义比较器对对象数组的指定范围进行排序的示例

以下示例显示了 Java Arrays parallelSort(T[], int, int, Comparator) 方法的用法。首先,我们创建了一个对象数组,并打印了原始数组。使用 parallelSort() 方法对数组进行排序,然后打印排序后的数组。

package com.tutorialspoint;

import java.util.Arrays;
import java.util.Comparator;

public class ArrayDemo {
   public static void main(String[] args) {
      // initialize unsorted array
      Student arr[] = { new Student(1, "Julie"), new Student(3, "Adam"), new Student(2, "Robert") };

      System.out.print("Original Array: [");
      // print the array
      for (int i = 0; i < arr.length; i++) {
         System.out.print(arr[i] + " ");
      }
      System.out.println("]");
	  
      RollNoComparator comparator = new RollNoComparator();
      // sort the array
      Arrays.parallelSort(arr, 0, arr.length, comparator);

      System.out.print("Sorted Array: [");
      // print the array
      for (int i = 0; i < arr.length; i++) {
         System.out.print(arr[i] + " ");
      }
      System.out.println("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
   
   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }

   public int getRollNo() {
      return rollNo;
   }

   public void setRollNo(int rollNo) {
      this.rollNo = rollNo;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

class RollNoComparator implements Comparator<Student>{

   @Override
   public int compare(Student o1, Student o2) {
      return o1.getRollNo()-o2.getRollNo();
   }	
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Original Array: [[ 1, Julie ] [ 3, Adam ] [ 2, Robert ] ]
Sorted Array: [[ 1, Julie ] [ 2, Robert ] [ 3, Adam ] ]

使用自定义比较器对对象子数组进行排序的示例

以下示例显示了 Java Arrays parallelSort(T[], int, int) 方法的用法。首先,我们创建了一个对象数组,并打印了原始数组。使用 parallelSort() 方法对子数组进行排序,然后打印排序后的数组。

package com.tutorialspoint;

import java.util.Arrays;
import java.util.Comparator;

public class ArrayDemo {
   public static void main(String[] args) {
      // initialize unsorted array
      Student arr[] = { new Student(3, "Adam"), new Student(1, "Julie"), new Student(2, "Robert") };

      System.out.print("Original Array: [");
      // print the array
      for (int i = 0; i < arr.length; i++) {
         System.out.print(arr[i] + " ");
      }
      System.out.println("]");
      RollNoComparator comparator = new RollNoComparator();
      // sort first two elements of the array 
      Arrays.parallelSort(arr, 0, 2, comparator);

      System.out.print("Sorted Array: [");
      // print the array
      for (int i = 0; i < arr.length; i++) {
         System.out.print(arr[i] + " ");
      }
      System.out.println("]");
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
   
   @Override
   public boolean equals(Object obj) {
      Student s = (Student)obj;
      return this.rollNo == s.rollNo && this.name.equalsIgnoreCase(s.name);
   }

   public int getRollNo() {
      return rollNo;
   }

   public void setRollNo(int rollNo) {
      this.rollNo = rollNo;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

class RollNoComparator implements Comparator<Student>{

   @Override
   public int compare(Student o1, Student o2) {
      return o1.getRollNo()-o2.getRollNo();
   }	
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Original Array: [[ 3, Adam ] [ 1, Julie ] [ 2, Robert ] ]
Sorted Array: [[ 1, Julie ] [ 3, Adam ] [ 2, Robert ] ]
java_util_arrays.htm
广告