logo

Arrays.sort() Java

Išbandykite GfG praktikoje ' title=

Masyvo elementams rūšiuoti naudojamas Java metodas Arrays.sort() .

  • Tai suteikia lanksčių parinkčių, leidžiančių rūšiuoti ištisus masyvus, pogrupius ar net pasirinktinius objektus naudojant lyginamuosius elementus.
  • Gali rūšiuoti tiek primityvius masyvus (int char ir kt.), tiek objektų masyvus (Integer String ir kt.).

Pavyzdys: Sveikųjų skaičių ir simbolių masyvų rūšiavimas didėjančia tvarka



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));  } } 

Išvestis
[-1 2 3 4] [a b b c] 

Paaiškinimas:

  • Masyvai.sort() pertvarko elementus didėjančia tvarka.
  • Dublikatai nepašalinami.
  • Primityvūs masyvai negali naudoti pasirinktinių lygintuvų.

Masyvų sintaksė.sort() Metodas

1. Norėdami surūšiuoti visą masyvą

Masyvai.rūšiuoti(); 

2. Norėdami surūšiuoti pogrupį

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



Parametrai:

  • arr : masyvas, kurį reikia rūšiuoti.
  • from_Index: Pirmojo rūšiuojamo elemento (imtinai) indeksas.
  • į_indeksą : paskutinio rūšiuojamo elemento (išskyrus) indeksas.
  • Grąžinimo tipas: negalioja (šis metodas nieko negrąžina).

Pastaba:

  • Arrays.sort() nepašalina dublikatų; ji tik pertvarko elementus.
  • Primityvūs tipai negali naudoti pasirinktinių komparatorių; rūšiavimas vyksta natūralia (didėjančia) tvarka.

Pavyzdys: „Subarray“ rūšiavimas

Galite rūšiuoti masyvo dalį nurodydami pradžios (imtinai) ir pabaigos (išskyrus) 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));  } } 

Išvestis
[2 -1 3 4] 

Paaiškinimas: Rūšiuojami tik 1 2 ir 3 indeksų elementai; 0 indekso elementas lieka nepakitęs.

Rūšiavimas mažėjančia tvarka

Norėdami rūšiuoti masyvą mažėjančia tvarka, galime naudoti Arrays.sort() metodą su Collections.reverseOrder() kaip lyginamuoju elementu.

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));  } } 

Išvestis
[4 3 2 -1] [chauhan Vishnu Hii] 

Paaiškinimas:

  • Veikia tik objektų masyvuose; primityvūs tipai (int) negali naudoti komparatorių.
  • For Strings rūšiuoja leksikografiškai iš Z -> A.

Pasirinktinis rūšiavimas naudojant palyginimo priemonę

Mes galime rūšiuoti objektų masyvą, apibrėždami pasirinktinę rūšiavimo logiką naudodami  Palyginimo sąsaja .

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);  } } 

Išvestis
1 Ram MP 2 Shyam UP 3 Hari Delhi 

Paaiškinimas:

  • Komparatorius leidžia pasirinktinę rūšiavimo logiką nekeičiant klasės.
  • Čia mokiniai rūšiuojami pagal ritinio numerį.

Natūralus rūšiavimas su palyginama sąsaja

Toliau pateiktame pavyzdyje mes rūšiuojame studentų objektų masyvą pagal jų pavadinimą abėcėlės tvarka.

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);  } } 

Išvestis
3 Hari Bihar 1 Ram UP 2 Shyam MP 

Paaiškinimas:

  • Šiame pavyzdyje mes naudojame Palyginama sąsaja nustatyti natūralią Mokinio objektų tvarką.
  • Įdiegę metodą nurodome, kaip turi būti lyginami du Mokinio objektai, įjungiant rūšiavimą pagal mokinio vardą.

Tai leidžia mums naudoti Arrays.sort() metodą tiesiogiai studentų objektų masyve, kad surūšiuotume juos tvarka ir čia mums nereikia atskiro palyginimo.