Programa Java para ordenar objetos en ArrayList por fecha

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. 

  1. Uso de la interfaz del comparador
  2. 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);
        }
    }
}
Producción

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);
        }
    }
}
Producción

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);
        }
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *