logo

Arrays.sort() Java

Izmēģiniet to GfG Practice ' title=

Masīva elementu kārtošanai tiek izmantota Java metode Arrays.sort().

  • Tas nodrošina elastīgas iespējas kārtot veselu masīvu apakšmasīvus vai pat pielāgotus objektus, izmantojot salīdzinājumus.
  • Var kārtot gan primitīvus masīvus (int char utt.), gan objektu masīvus (Integer String utt.).

Piemērs: Veselo skaitļu un rakstzīmju masīvu kārtošana augošā secībā



Java
import java.util.Arrays; class Geeks{    public static void main(String[] args) {  // Integer array  int[] arr1 = {2 -1 3 4};  // Character array  char[] arr2 = {'b' 'a' 'c' 'b'};  // Sorting arrays in ascending order  Arrays.sort(arr1);   Arrays.sort(arr2);  // Print sorted arrays  System.out.println(Arrays.toString(arr1));   System.out.println(Arrays.toString(arr2));  } } 

Izvade
[-1 2 3 4] [a b b c] 

Paskaidrojums:

  • Arrays.sort() pārkārto elementus augošā secībā.
  • Dublikāti netiek noņemti.
  • Primitīvajos masīvos nevar izmantot pielāgotus salīdzinājumus.

Masīvu sintakse.sort() Metode

1. Lai sakārtotu visu masīvu

Arrays.sort(); 

2. Lai sakārtotu apakšgrupu

public static void sort(int[] arr int from_Index int to_Index) ;



Parametri:

  • arr : kārtojamais masīvs.
  • from_Index: Pirmā kārtojamā elementa indekss (ieskaitot).
  • uz_indeksu : pēdējā kārtojamā elementa indekss (izņemot).
  • Atgriešanas veids: spēkā neesošs (Šī metode neko neatgriež).

Piezīme:

  • Arrays.sort() nenoņem dublikātus; tas tikai pārkārto elementus.
  • Primitīvie tipi nevar izmantot pielāgotus salīdzinātājus; šķirošana notiek dabiskā (augošā) secībā.

Piemērs: kārtošana apakšgrupā

Varat kārtot masīva daļu, norādot sākuma (ieskaitot) un beigu (izņemot) indeksus.



Java
import java.util.Arrays; public class Geeks{    public static void main(String[] args){  int[] arr = {2 -1 4 3};  // Sort elements from index 1 to 3  Arrays.sort(arr 1 4);  // Print array after sorting subarray  System.out.println(Arrays.toString(arr));  } } 

Izvade
[2 -1 3 4] 

Paskaidrojums: Tiek sakārtoti tikai elementi pie indeksa 1 2 un 3; elements ar indeksu 0 paliek nemainīgs.

Šķirošana dilstošā secībā

Lai kārtotu masīvu dilstošā secībā, mēs varam izmantot metodi Arrays.sort() ar Collections.reverseOrder() kā salīdzinājumu.

Java
import java.util.Arrays; import java.util.Collections; public class Geeks{  public static void main(String[] args) {  // Integer array  Integer[] arr = {2 -1 3 4};  Arrays.sort(arr Collections.reverseOrder());   System.out.println(Arrays.toString(arr));   // String array  String[] str = {'Hii' 'Vishnu' 'chauhan'};  Arrays.sort(str Collections.reverseOrder());   System.out.println(Arrays.toString(str));  } } 

Izvade
[4 3 2 -1] [chauhan Vishnu Hii] 

Paskaidrojums:

  • Darbojas tikai uz objektu masīviem; primitīvie veidi (int) nevar izmantot salīdzinājumus.
  • For Strings kārto leksikogrāfiski no Z -> A.

Pielāgota šķirošana ar salīdzinājumu

Mēs varam kārtot objektu masīvu, definējot pielāgotu šķirošanas loģiku, izmantojot  Salīdzinājuma interfeiss .

Java
import java.util.*; // Custom class class Student{    int roll;  String name;  String address;  Student(int roll String name String address){    this.roll = roll;  this.name = name;  this.address = address;  }  // Print student details  public String toString() {  return roll + ' ' + name + ' ' + address;  } } // Comparator to sort by roll number class SortByRoll implements Comparator<Student>{    public int compare(Student s1 Student s2){    return s1.roll - s2.roll;  } } class Geeks {  public static void main(String[] args){  Student[] students = {  new Student(1 'Ram' 'MP')  new Student(2 'Shyam' 'UP')  new Student(3 'Hari' 'Delhi')  };  // Sort using custom comparator  Arrays.sort(students new SortByRoll());  // Print sorted students  for (Student s : students)  System.out.println(s);  } } 

Izvade
1 Ram MP 2 Shyam UP 3 Hari Delhi 

Paskaidrojums:

  • Salīdzinātājs ļauj pielāgotu šķirošanas loģiku, nemainot klasi.
  • Šeit skolēni tiek sakārtoti pēc ruļļa numura.

Dabiskā šķirošana ar salīdzināmu interfeisu

Tālāk esošajā piemērā mēs sakārtojam Studentu objektu masīvu, pamatojoties uz to nosaukumu alfabētiskā secībā.

Java
import java.util.Arrays; class Student implements Comparable<Student>{    int r;  String n;  String a;  // Constructor  public Student(int r String n String a){    this.r = r;  this.n = n;  this.a = a;  }  // compareTo method to sort by name  public int compareTo(Student o){    return this.n.compareTo(o.n);  }  // toString() method to print Student details  public String toString() {  return this.r + ' ' + this.n + ' ' + this.a;  } } public class Geeks{    public static void main(String[] args){    Student[] s = {  new Student(1 'Ram' 'UP')  new Student(2 'Shyam' 'MP')  new Student(3 'Hari' 'Bihar')  };  // Sorting students by name in alphabetical order  Arrays.sort(s);  for (Student student : s)  System.out.println(student);  } } 

Izvade
3 Hari Bihar 1 Ram UP 2 Shyam MP 

Paskaidrojums:

  • Šajā piemērā mēs izmantojam Salīdzināms interfeiss definēt Studentu objektu dabisko secību.
  • Ieviešot metodi, mēs norādām, kā jāsalīdzina divi Studentu objekti, iespējojot kārtošanu pēc skolēna vārda.

Tas ļauj mums izmantot Arrays.sort() metodi tieši studentu objektu masīvā, lai sakārtotu tos secībā, un šeit mums nav nepieciešams atsevišķs salīdzinājums.