¿Cómo agregar objetos de clase personalizados al TreeSet en Java?

TreeSet es una implementación de la interfaz SortedSet en Java que utiliza un árbol rojo-negro para el almacenamiento. Por defecto, mantiene un orden ascendente. Contiene elementos únicos solamente. No permite elementos nulos. Los tiempos de acceso y recuperación son bastante rápidos. Para agregar el objeto definido por el usuario en TreeSet, necesitamos implementar una interfaz Comparable. Un elemento que queramos agregar en TreeSet debe ser de un tipo comparable. Si no implementamos la interfaz Comparable, arrojará ClassCastException. 

Ejemplo 1

Java

// Importing util package
import java.util.*;
  
// Custome class Car implements Comparable interface
class Car implements Comparable<Car> {
  
    // attributes
    int Modelno;
    String name, city;
    int stock;
  
    // Car constructor
    public Car(int Modelno, String name, String city,
               int stock)
    {
        this.Modelno = Modelno;
        this.name = name;
        this.city = city;
        this.stock = stock;
    }
  
    // Override the compareTo() method
    public int compareTo(Car c)
    {
        if (stock > c.stock) {
            return 1;
        }
        else if (stock < c.stock) {
            return -1;
        }
        else {
            return 0;
        }
    }
}
  
public class GFG {
  
    // Main driver method
    public static void main(String[] args)
    {
        // Define an objects of TreeSet class
        TreeSet<Car> set = new TreeSet<Car>();
  
        // Creating Car objects
        Car c1 = new Car(132, "BMW", "Rajkot", 35);
        Car c2 = new Car(269, "Audi", "Surat", 20);
        Car c3 = new Car(560, "Kia", "Vadodara", 15);
        Car c4 = new Car(109, "Creta", "Ahmedabad", 26);
  
        // Adding Car objects to TreeSet
        set.add(c1);
        set.add(c2);
        set.add(c3);
        set.add(c4);
  
        // Traversing TreeSet
        for (Car c : set) {
            System.out.println(c.stock + " " + c.name + " "
                               + c.city + " " + c.Modelno);
        }
    }
}
Producción

15 Kia Vadodara 560
20 Audi Surat 269
26 Creta Ahmedabad 109
35 BMW Rajkot 132

Necesitamos anular el método compareTo() para que clasifique nuestro conjunto en un orden particular. 

Ejemplo 2: Tomemos el mismo ejemplo, pero ahora reemplazamos el método compareTo() con respecto al nombre del automóvil.

Java

// Importing util package
import java.util.*;
  
// Custome class Car implements Comparable interface
class Car implements Comparable<Car> {
  
    // attributes
    int Modelno;
    String name, city;
    int stock;
  
    // Car constructor
    public Car(int Modelno, String name, String city,
               int stock)
    {
        this.Modelno = Modelno;
        this.name = name;
        this.city = city;
        this.stock = stock;
    }
  
    // Override the compareTo() method
    public int compareTo(Car c)
    {
        return name.compareTo(c.name);
    }
}
  
public class GFG {
    // Main driver method
    public static void main(String[] args)
    {
  
        // Define an objects of TreeSet class
        TreeSet<Car> set = new TreeSet<Car>();
        
        // Creating Car objects
        Car c1 = new Car(132, "BMW", "Rajkot", 35);
        Car c2 = new Car(269, "Audi", "Surat", 20);
        Car c3 = new Car(560, "Kia", "Vadodara", 15);
        Car c4 = new Car(109, "Creta", "Ahmedabad", 26);
  
        // Adding Car objects to TreeSet
        set.add(c1);
        set.add(c2);
        set.add(c3);
        set.add(c4);
  
        // Traversing TreeSet
        for (Car c : set) {
            System.out.println(c.name + " " + c.stock + " "
                               + c.city + " " + c.Modelno);
        }
    }
}
Producción

Audi 20 Surat 269
BMW 35 Rajkot 132
Creta 26 Ahmedabad 109
Kia 15 Vadodara 560

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 *