Java proporciona la interfaz Comparable para ordenar objetos usando miembros de datos de la clase. La interfaz Comparable contiene solo un método compareTo() que compara dos objetos para imponer un orden entre ellos. Devuelve un entero negativo, cero o un entero positivo para indicar si el objeto de entrada es menor, igual o mayor que el objeto actual. Se utiliza principalmente para ordenar las arrays o listas de objetos personalizados.
Dado que todas las clases Wrapper ya implementan la interfaz Java Comparable, proporciona una implementación predeterminada de compareTo() , y es por eso que las funciones Collections.sort() y Arrays.sort() se pueden usar en estos objetos. Ordenar elementos de arrays y listas que contienen clases Wrapper como objetos que ya implementan la interfaz Comparable.
Ilustración:
Input : {8 , 9 , 1 , 5 , 3 , 0} Output : {0 , 1 , 3 , 5 , 8 , 9} Input : {"Ankit", "Parul" , "Swati" , "Tarun", "Akshat"} Output : {"Akshat" , "Ankit" , "Parul" , "Swati" , "Tarun"}
Implementación:
Ejemplo
Java
// Java Program to Sorting Elements illustrating // Array.srt) and Collection.sort() method // Naive approach // Importing all classes of // java.util package import java.util.*; // Class class GFG { // Main driver method public static void main(String[] args) { // Case 1: Array of Integer using sort() // Sorting array of integers // using Arrays.sort() // Custom input entries int[] a = { 8, 9, 1, 5, 3, 0 }; // Print the array before sorting System.out.println("Before Sorting: " + Arrays.toString(a)); // By default sorting is in ascending order Arrays.sort(a); // Print the array after sorting System.out.println("After Sorting: " + Arrays.toString(a)); // Case 2: Array of string using sort() // Sorting array of Strings // using Arrays.sort() String[] str = { "Ankit", "Parul", "Swati", "Tarun", "Akshat" }; // Print the input array of string before sorting System.out.println("Before Sorting: " + Arrays.toString(str)); // Sort() method Arrays.sort(str); // Print the input array of string before sorting System.out.println("After Sorting: " + Arrays.toString(str)); // Case 3: Collections.sort // Sorting List of String Collections.sort() // Creating an list object of string type // Custominput elements in object List<String> lt = Arrays.asList("Red", "Blue", "Green", "Black"); // Print the elements before sorting System.out.println("Before Sorting: " + lt); Collections.sort(lt); // Print the elements after sorting System.out.println("After Sorting:: " + lt); } }
Before Sorting: [8, 9, 1, 5, 3, 0] After Sorting: [0, 1, 3, 5, 8, 9] Before Sorting: [Ankit, Parul, Swati, Tarun, Akshat] After Sorting: [Akshat, Ankit, Parul, Swati, Tarun] Before Sorting: [Red, Blue, Green, Black] After Sorting:: [Black, Blue, Green, Red]
Ahora, si queremos ordenar una clase definida por el usuario en un orden específico, entonces tenemos que implementar la interfaz Comparable que está presente en el paquete java.lang y proporcionar la implementación del método compareTo( ). El método compareTo también genera una excepción NullPointerException o ClassCastException si el valor especificado es nulo o si el tipo del objeto especificado impide que se compare con el objeto.
Implementación:
Ejemplo
Java
// Java Program to Sorting Elements of Arrays and Wrapper // Classes that Already Implements Comparable // Importing all classes from // java.util package import java.util.*; // Class 1 // Helper class class Student implements Comparable<Student> { // Member variables of this class private int rollno; private String name; private Double marks; // Constructor of this class public Student(int rollno, String name, Double marks) { // This keyword refers to // current object itself this.rollno = rollno; this.name = name; this.marks = marks; } // Sorting based on marks of Students public int compareTo(Student s) { return this.marks.compareTo(s.marks); } public String toString() { return "Student{" + "RollNo=" + rollno + ", Name='" + name + '\'' + ", Marks=" + marks + '}'; } } // Class 2 // Main class class GFG { // main driver method public static void main(String args[]) { // Creating an ArrayList of user-defined // type(Student) ArrayList<Student> arr = new ArrayList<>(); // Adding elements to object created above // Custom input entries arr.add(new Student(1, "Ankush", 98.0)); arr.add(new Student(2, "Akshat", 99.0)); arr.add(new Student(3, "Parul", 87.0)); arr.add(new Student(4, "Tarun", 78.0)); arr.add(new Student(5, "Swati", 90.0)); // Iterating over the above ArrayList for (int i = 0; i < arr.size(); i++) // Print the ArrayList elements as // in order added System.out.println(arr.get(i)); // Calling the Collection.sort() method // to sort elements od ArrayList Collections.sort(arr); // Printing the ArrayList after sorting System.out.println("\nAfter Sorting :\n"); for (int i = 0; i < arr.size(); i++) System.out.println(arr.get(i)); } }
Student{RollNo=1, Name='Ankush', Marks=98.0} Student{RollNo=2, Name='Akshat', Marks=99.0} Student{RollNo=3, Name='Parul', Marks=87.0} Student{RollNo=4, Name='Tarun', Marks=78.0} Student{RollNo=5, Name='Swati', Marks=90.0} After Sorting : Student{RollNo=4, Name='Tarun', Marks=78.0} Student{RollNo=3, Name='Parul', Marks=87.0} Student{RollNo=5, Name='Swati', Marks=90.0} Student{RollNo=1, Name='Ankush', Marks=98.0} Student{RollNo=2, Name='Akshat', Marks=99.0}
Publicación traducida automáticamente
Artículo escrito por namitachaudhary60 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA