logo

Arrays.sort() i Java

Prova det på GfG Practice ' title=

Metoden Arrays.sort() i Java används för att sortera elementen i en array.

  • Det ger flexibla alternativ för att sortera hela arrays subarrayer eller till och med anpassade objekt med hjälp av komparatorer.
  • Kan sortera både primitiva arrayer (int char etc.) och objekt arrays (Integer String etc.).

Exempel: Sortering av heltals- och teckenmatriser i stigande ordning



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

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

Förklaring:

  • Arrays.sort() ordnar om element i stigande ordning.
  • Dubletter tas inte bort.
  • Primitiva arrayer kan inte använda anpassade komparatorer.

Syntax för Arrays.sort()-metoden

1. För att sortera hela arrayen

Arrays.sort(); 

2. För att sortera en undergrupp

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



Parametrar:

  • arr : Matrisen som ska sorteras.
  • from_Index: Indexet för det första elementet (inklusive) som ska sorteras.
  • to_Index : Indexet för det sista elementet (exklusivt) som ska sorteras.
  • Returtyp: void (denna metod returnerar inget).

Notera:

  • Arrays.sort() tar inte bort dubbletter; det ordnar bara om element.
  • Primitiva typer kan inte använda anpassade komparatorer; sorteringen sker i naturlig (stigande) ordning.

Exempel: Sortering av subarray

Du kan sortera en del av en array genom att ange start- (inklusive) och slut (exklusiva) index.



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

Produktion
[2 -1 3 4] 

Förklaring: Endast elementen vid index 1 2 och 3 sorteras; elementet vid index 0 förblir oförändrat.

Sortering i fallande ordning

För att sortera en array i fallande ordning kan vi använda metoden Arrays.sort() med Collections.reverseOrder() som en komparator.

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

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

Förklaring:

  • Fungerar endast på objektmatriser; primitiva typer (int) kan inte använda komparatorer.
  • For Strings sorterar lexikografiskt från Z -> A.

Anpassad sortering med komparator

Vi kan sortera en rad objekt genom att definiera anpassad sorteringslogik med hjälp av  Jämförelsegränssnitt .

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

Produktion
1 Ram MP 2 Shyam UP 3 Hari Delhi 

Förklaring:

  • Comparator tillåter anpassad sorteringslogik utan att ändra klassen.
  • Här sorteras eleverna efter rullnummer.

Naturlig sortering med jämförbart gränssnitt

I exemplet nedan sorterar vi en array av studentobjekt baserat på deras namn alfabetiskt.

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

Produktion
3 Hari Bihar 1 Ram UP 2 Shyam MP 

Förklaring:

  • I det här exemplet använder vi Jämförbart gränssnitt att definiera en naturlig ordning för Studentobjekten.
  • Genom att implementera metoden specificerar vi hur två Studentobjekt ska jämföras genom att möjliggöra sortering utifrån elevens namn.

Detta tillåter oss att använda metoden Arrays.sort() direkt på en array av Student-objekt för att sortera dem i en ordning och här behöver vi inte en separat komparator.