¿Cómo ordenar ArrayList usando Comparator?

Comparator es una interfaz que se utiliza para reorganizar Arraylist de manera ordenada. Comparator se utiliza para ordenar una ArrayList de objetos definidos por el usuario. En java, Comparator se proporciona en el paquete java.util . Usando Comparator podemos ordenar ArrayList en base a múltiples variables. Simplemente podemos implementar Comparator sin afectar la clase original definida por el usuario. Para ordenar una ArrayList usando Comparator, necesitamos anular el método compare() proporcionado por la interfaz del comparador. Después de reescribir el método compare(), debemos llamar al método collections.sort() como se muestra a continuación.

Sintaxis:

Collections.sort(list, comparator)

Parámetros:

  • lista: Lista que debe ordenarse según el comparador.
  • comparador: instancia de clase de comparador

Devoluciones: Ordena la lista y no devuelve nada.

Ejemplo

Java

// Java program to Sort ArrayList using Comparator
  
import java.util.*;
  
// create the Shop class
class Shop {
    int ProductNo;
    String name;
    int stock;
  
    // constructor
    Shop(int ProductNo, String name, int stock)
    {
        this.ProductNo = ProductNo;
        this.name = name;
        this.stock = stock;
    }
}
  
// creates the comparator for comparing stock value
class StockComparator implements Comparator<Shop> {
  
    // override the compare() method
    public int compare(Shop s1, Shop s2)
    {
        if (s1.stock == s2.stock)
            return 0;
        else if (s1.stock > s2.stock)
            return 1;
        else
            return -1;
    }
}
  
class GFG {
    public static void main(String[] args)
    {
        // create the ArrayList object
        ArrayList<Shop> s = new ArrayList<Shop>();
        s.add(new Shop(218, "Pen", 520));
        s.add(new Shop(223, "Pencil", 213));
        s.add(new Shop(423, "Books", 101));
        s.add(new Shop(512, "Toy", 59));
        s.add(new Shop(723, "Bottle", 10));
  
        System.out.println("before sorting");
        for (Shop shop : s) {
            System.out.println(shop.stock + " " + shop.name
                               + " " + shop.ProductNo);
        }
        System.out.println();
  
        System.out.println(
            "After sorting(sorted by Stock)");
  
        // call the sort function
        Collections.sort(s, new StockComparator());
        for (Shop shop : s) {
            System.out.println(shop.stock + " " + shop.name
                               + " " + shop.ProductNo);
        }
    }
}
Producción

before sorting
520 Pen 218
213 Pencil 223
101 Books 423
59 Toy 512
10 Bottle 723

After sorting(sorted by Stock)
10 Bottle 723
59 Toy 512
101 Books 423
213 Pencil 223
520 Pen 218

En el ejemplo anterior, ordenamos la clase Tienda por el número de existencias disponibles. También podemos clasificarlo según el nombre y el número de producto. Ordenemos la ArrayList anterior según el nombre.

Ejemplo 2

Java

// Java program to Sort ArrayList using Comparator
  
import java.util.*;
  
// create the Shop class
class Shop {
  
    int ProductNo;
    String name;
    int stock;
  
    // constructor
    Shop(int ProductNo, String name, int stock)
    {
        this.ProductNo = ProductNo;
        this.name = name;
        this.stock = stock;
    }
}
  
// creates the comparator for comparing name
class NameComparator implements Comparator<Shop> {
  
    // override the compare() method
    public int compare(Shop s1, Shop s2)
    {
        return s1.name.compareTo(s2.name);
    }
}
  
class GFG {
    public static void main(String[] args)
    {
        // create the ArrayList object
        ArrayList<Shop> s = new ArrayList<Shop>();
        s.add(new Shop(218, "Pen", 520));
        s.add(new Shop(223, "Pencil", 213));
        s.add(new Shop(423, "Books", 101));
        s.add(new Shop(512, "Toy", 59));
        s.add(new Shop(723, "Bottle", 10));
  
        System.out.println("before sorting");
        for (Shop shop : s) {
            System.out.println(shop.name + " " + shop.stock
                               + " " + shop.ProductNo);
        }
        System.out.println();
  
        System.out.println("After sorting(sorted by Name)");
  
        // call the sort function
        Collections.sort(s, new NameComparator());
        for (Shop shop : s) {
            System.out.println(shop.name + " " + shop.stock
                               + " " + shop.ProductNo);
        }
    }
}
Producción

before sorting
Pen 520 218
Pencil 213 223
Books 101 423
Toy 59 512
Bottle 10 723

After sorting(sorted by Name)
Books 101 423
Bottle 10 723
Pen 520 218
Pencil 213 223
Toy 59 512

Publicación traducida automáticamente

Artículo escrito por meetsuvariya 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 *