Estructura de datos TreeMap de Java

JavaBeginner
Practicar Ahora

Introducción

La clase TreeMap en Java es parte de la interfaz de Colecciones de Java e implementa la interfaz Map. Almacena los pares clave-valor en un orden ordenado, a diferencia de otras implementaciones de Map. En este laboratorio, aprenderá a usar efectivamente la clase TreeMap en sus programas Java.

Creando un TreeMap

  • Abre tu editor de texto y crea un nuevo archivo llamado TreeMapDemo.java en el directorio ~/project.
  • Importa los paquetes necesarios:
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
  • Crea un objeto TreeMap:
Map<Integer, String> map = new TreeMap<>();

Agregando elementos al TreeMap

  • Utilice el método put() para agregar elementos al TreeMap:
map.put(1, "John");
map.put(2, "Mary");
map.put(3, "Peter");

Agregue este código dentro del método principal.

Imprimiendo el TreeMap

  • Utilice un bucle for-each para iterar a través del TreeMap:
for(Map.Entry<Integer, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

Usando clasificación personalizada

  • Cree una nueva clase llamada Employee:
class Employee implements Comparable<Employee> {
    private int id;
    private String name;

    public Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    @Override
    public int compareTo(Employee e) {
        return this.id - e.getId();
    }
}
  • Agregue algunos empleados al TreeMap:
Map<Employee, String> employeeMap = new TreeMap<>();
employeeMap.put(new Employee(3, "John"), "IT");
employeeMap.put(new Employee(2, "Mary"), "HR");
employeeMap.put(new Employee(1, "Peter"), "Finance");
  • Ahora, cuando itere a través del TreeMap, se ordenará según el ID del empleado:
for(Map.Entry<Employee, String> entry : employeeMap.entrySet()) {
    System.out.println(entry.getKey().getId() + " "
                       + entry.getKey().getName() + " "
                       + entry.getValue());
}

Usando comparadores para la clasificación

  • Defina un Comparador personalizado en su clase TreeMapDemo:
class DescendingOrder implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
}
  • Cree un nuevo objeto TreeMap con el Comparador personalizado:
Map<Integer, String> treeMap = new TreeMap<>(new DescendingOrder());
treeMap.put(1, "John");
treeMap.put(4, "Mary");
treeMap.put(2, "Peter");
  • Ahora, cuando itere a través del TreeMap, se ordenará en orden descendente:
for(Map.Entry<Integer, String> entry : treeMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

Accediendo a los elementos del mapa

  • Utilice el método get() para acceder a un elemento específico:
String name = map.get(1);
System.out.println("Name is " + name);

Eliminando elementos del mapa

  • Utilice el método remove() para eliminar un elemento específico:
String removedName = map.remove(2);
System.out.println("Removed: " + removedName);

Obteniendo el tamaño del mapa

  • Utilice el método size() para obtener el número de elementos en el TreeMap:
int size = map.size();
System.out.println(size);

Obteniendo los primeros y últimos elementos

  • Utilice los métodos firstKey() y lastKey() para obtener los primeros y últimos elementos en el TreeMap:
int firstKey = map.firstKey();
int lastKey = map.lastKey();

Obteniendo un rango de elementos

  • Utilice el método subMap() para obtener un rango de elementos:
Map<Integer, String> rangeMap = map.subMap(1, 3);
for(Map.Entry<Integer, String> entry : rangeMap.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

Compila y ejecuta el programa

  • Abra su terminal y navegue hasta el directorio ~/proyecto.
  • Compile el archivo TreeMapDemo.java utilizando el comando javac:
javac TreeMapDemo.java
  • Ejecute el programa utilizando el comando java:
java TreeMapDemo

Resumen

En este laboratorio, aprendiste sobre la clase TreeMap en Java y cómo utilizarla de manera efectiva en tus programas. Aprendiste cómo crear un TreeMap, agregar y eliminar elementos, y recuperar elementos basados en criterios específicos. También aprendiste cómo personalizar el orden de clasificación utilizando Comparators. La clase TreeMap proporciona mucha flexibilidad y control sobre la clasificación y el almacenamiento de pares clave-valor.