La principal herramienta que llama la atención es el método sort() que se utilizará para el mecanismo de comparación de la clase Collections que ordena en orden decreciente. Sí, si de forma genérica queremos lograr el objetivo teniendo en cuenta la condición límite en la que los objetos a clasificar están definidos por el usuario, entonces hágalo a ciegas con Comparator. Ambos enfoques se analizan a continuación, donde el objeto también se crea del tipo definido por el usuario.
Métodos:
En Java, tenemos varios métodos para ordenar objetos en ArrayList por fecha. Esto se puede hacer utilizando la interfaz Comparable<> o mediante el método Collections.sort() , para realizar esta tarea puede utilizar cualquiera de ellos.
- Uso de la interfaz del comparador
- Usando el método Collections.sort()
Ahora analicemos todos ellos uno por uno.
Método 1: Uso de la interfaz Comparator
La interfaz de Java Comparator se utiliza para ordenar los objetos de la clase definida por el usuario. Mediante el uso de la interfaz Comparator<> , puede ordenar los elementos en función de cualquier miembro de datos definido en la clase definida por el usuario. El paquete java.util contiene esta interfaz. Podemos hacer esta tarea usando los métodos compare() y compareTo() que se usarán para comparar los objetos de nuestra clase DateItem.
Acercarse:
- Cree una nueva clase y nombre esa clase como DateItem y cree una variable de tipo String, luego cree un constructor de clase DateItem y pase esa variable de tipo String aquí.
- En el método principal , cree una ArrayList de tipo DateItem.
- Almacene los objetos de DateItem en ArrayList.
- Cree otra clase llamada sortItems que implemente Comparator y pase nuestra clase DateItem a un comparador.
- Ahora, en la clase Comparator , cree un método de comparación que devuelva un número entero y tome dos parámetros del objeto ‘ DateItem ‘ como comparar (Objeto obj1, Objeto obj2 ).
- Dentro del método de comparación para el valor devuelto, use el método compareTo() que devolverá el valor especificado comparando los objetos DateItem.
- Ahora, en el método principal , use el método Collections.sort() y pásele el objeto de clase ArrayList y ‘ SortItem ‘ , ordenará las fechas y se generará la salida.
Ejemplo 1
Java
// Java Program to Sort Objects in ArrayList by Date // Using Comparator interface // Importing required classes import java.util.*; // Class 1 // helper class for DateItem class DateItem { // Member variable of this class String date; // Constructor of this class DateItem(String date) { // This keyword refers to current object itself this.date = date; } } // Class 2 // Helper class implementing Comparator // from the Comparable interface class sortItems implements Comparator<DateItem> { // Method of this class // @Override public int compare(DateItem a, DateItem b) { // Returning the value after comparing the objects // this will sort the data in Ascending order return a.date.compareTo(b.date); } } // Class 3 // Main class public class GFG { // Main driver method public static void main(String args[]) { // Creating ArrayList class object // Declaring object of type-DateItem // class(user-defined) ArrayList<DateItem> dateList = new ArrayList<>(); // Adding data to the ArrayList // using standard add() method dateList.add(new DateItem("2020-03-25")); dateList.add(new DateItem("2019-01-27")); dateList.add(new DateItem("1998-01-27")); dateList.add(new DateItem("1998-02-26")); // Sorting the ArrayList // using Collections.sort() method Collections.sort(dateList, new sortItems()); // Display message System.out.println("Sorted in Ascending Order"); // Iterating the list using for-each loop for (DateItem d : dateList) { // Printing the sorted items from the List System.out.println(d.date); } } }
Sorted in Ascending Order 1998-01-27 1998-02-26 2019-01-27 2020-03-25
Nota: este código ordenará las fechas en orden ascendente. Si desea cambiar el orden de clasificación, puede consultar el siguiente programa:
Ejemplo 2
Java
// Java Program to Sort Objects in ArrayList by Date // Using Comparator interface // Importing required classes import java.util.*; // Class 1 // Helper class class DateItem { // Member variable String date; // Constructor of this class DateItem(String date) { // this keyword refers to current instance itself this.date = date; } } // Class 2 // Helper class implementing Comparable interface class sortItems implements Comparator<DateItem> { // @Override // Method of this class // To compare datetime objects public int compare(DateItem a, DateItem b) { // Returning the value after comparing the objects // this will sort the data in Descending order return b.date.compareTo(a.date); } } // Class 3 // Main class public class GFG { // Main driver method public static void main(String args[]) { // Creating an ArrayList of DateItem class // (user-defined) ArrayList<DateItem> dateList = new ArrayList<>(); // Adding data to the ArrayList // using standard add() method dateList.add(new DateItem("2020-03-25")); dateList.add(new DateItem("2019-01-27")); dateList.add(new DateItem("1998-01-27")); dateList.add(new DateItem("1998-02-26")); // Sorting the elements on ArrayList object above Collections.sort(dateList, new sortItems()); // Display message only System.out.println("Sorted in Descending Order"); // Iterating the List // using for-each loop for (DateItem d : dateList) { // Printing the sorted items from the List System.out.println(d.date); } } }
Sorted in Descending Order 2020-03-25 2019-01-27 1998-02-26 1998-01-27
Método 2: Usar el método Collections.sort()
El método Collections.sort() se puede usar para ordenar ArrayList de objetos personalizados. Podemos usar este método para ordenar los objetos en ArrayList por fecha. El método java.util.Collections.sort() está presente en la clase java.util.Collections. Se utiliza para ordenar los elementos presentes en la lista especificada de Colecciones en orden ascendente. Funciona de manera similar al método java.util.Arrays.sort() , pero es mejor que él, ya que puede ordenar los elementos de Array, así como una lista vinculada, una cola y muchos más presentes en él.
Ejemplo
Java
// Java Program to Sort Objects in ArrayList by Date // Using Collections.sort() method // Importing required classes import java.util.*; // Main class public class GFG { // Main driver method public static void main(String[] args) { // Creating an ArrayList of String to // store the Dates ArrayList<String> datesList = new ArrayList<>(); // Adding date to ArrayList // using standard add() method datesList.add("2020-03-25"); datesList.add("2019-01-27"); datesList.add("2020-03-26"); datesList.add("2020-02-26"); // Display message only System.out.println( "Dates Object before sorting : "); // Iterating in the ArrayList // using for each loop for (String dates : datesList) { // Printing the data from the list System.out.println(dates); } // Sorting the ArrayList // using Collections.sort() method Collections.sort(datesList); // Display message only System.out.println("Dates Object after sorting : "); // Iterating in the ArrayList // using for-each loop for (String dates : datesList) { // Printing the data from the list System.out.println(dates); } } }
Dates Object before sorting : 2020-03-25 2019-01-27 2020-03-26 2020-02-26 Dates Object after sorting : 2019-01-27 2020-02-26 2020-03-25 2020-03-26
Publicación traducida automáticamente
Artículo escrito por Pushpender007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA