logo

Arrays.sort() i Java

Prøv det på GfG Practice ' title=

Metoden Arrays.sort() i Java bruges til at sortere elementerne i et array.

  • Det giver fleksible muligheder for at sortere hele arrays underarrays eller endda brugerdefinerede objekter ved hjælp af komparatorer.
  • Kan sortere både primitive arrays (int char etc.) og objekt arrays (Integer String etc.).

Eksempel: Sortering af heltal og tegnarrays i stigende rækkefølge

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] 

Forklaring:



  • Arrays.sort() omarrangerer elementer i stigende rækkefølge.
  • Dubletter fjernes ikke.
  • Primitive arrays kan ikke bruge brugerdefinerede komparatorer.

Syntaks for Arrays.sort()-metoden

1. For at sortere hele arrayet

Arrays.sort(); 

2. For at sortere en underarray

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

Parametre:

  • arr : Det array, der skal sorteres.
  • fra_indeks: Indekset for det første element (inklusive), der skal sorteres.
  • to_Index : Indekset for det sidste element (eksklusivt), der skal sorteres.
  • Returtype: void (denne metode returnerer ikke noget).

Note:

  • Arrays.sort() fjerner ikke dubletter; den omorganiserer kun elementer.
  • Primitive typer kan ikke bruge brugerdefinerede komparatorer; sortering er i naturlig (stigende) rækkefølge.

Eksempel: Sortering af underarray

Du kan sortere en del af et array ved at angive start- (inklusive) og slut- (eksklusive) indekser.

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] 

Forklaring: Kun elementerne ved indeks 1 2 og 3 er sorteret; elementet ved indeks 0 forbliver uændret.

Sortering i faldende rækkefølge

For at sortere et array i faldende rækkefølge kan vi bruge Arrays.sort() metoden 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] 

Forklaring:

  • Virker kun på objekt-arrays; primitive typer (int) kan ikke bruge komparatorer.
  • For Strings sorterer leksikografisk fra Z -> A.

Brugerdefineret sortering med komparator

Vi kan sortere en række objekter ved at definere tilpasset sorteringslogik ved hjælp af  Komparator interface .

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 

Forklaring:

  • Comparator tillader tilpasset sorteringslogik uden at ændre klassen.
  • Her er eleverne sorteret efter rullenummer.

Naturlig sortering med sammenlignelig grænseflade

I eksemplet nedenfor sorterer vi en række elevobjekter alfabetisk ud fra deres navn.

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 

Forklaring:

  • I dette eksempel bruger vi Sammenlignelig grænseflade at definere en naturlig rækkefølge for Elevobjekterne.
  • Ved at implementere metoden specificerer vi, hvordan to Student-objekter skal sammenlignes ved at aktivere sortering baseret på elevens navn.

Dette giver os mulighed for at bruge Arrays.sort() metoden direkte på et array af Student-objekter for at sortere dem i en rækkefølge, og her behøver vi ikke en separat komparator.