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
Javaimport 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.
Javaimport 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.
Javaimport 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 .
Javaimport 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.
Javaimport 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.