¿Cómo imprimir LinkedHashMap que contiene objetos de clase personalizados en Java?

LinkedHashMap es como HashMap con una característica adicional de mantener un orden de elementos insertados en él. HashMap proporcionó la ventaja de una inserción, búsqueda y eliminación rápidas, pero nunca mantuvo el seguimiento y el orden de inserción que proporciona LinkedHashMap donde se puede acceder a los elementos en su orden de inserción.

Hay dos formas de imprimir LinkedHashMap que contiene objetos de clase personalizados en Java:

Método 1 (usando el método System.out.println())

La forma más sencilla de imprimir LinkedHashMap es usar el método System.out.println directamente, que usa el método toString de la clase LinkedHashMap. El método toString, que se hereda de la clase AbstractMap , devuelve una representación de string de todas las asignaciones del mapa entre { y } y cada par clave-valor separado por una coma. Pero si LinkedHashMap contiene objetos de una clase personalizada como claves o valores, el método toString de la clase Object imprime el nombre de la clase, seguido de @, seguido del código hash del objeto que no es legible por humanos. A continuación se muestra la implementación:

Ejemplo 1:

Java

// Java program to demonstrate how to print LinkedHashMap of
// custom class objects
import java.util.*;
 
// Custom class
class Triangle {
 
    private String type;
 
    // Constructor
    public Triangle(String type) { this.type = type; }
}
 
public class GFG {
 
    public static void main(String[] args)
    {
 
        // New LinkedHashMap of custom class Triangle
        LinkedHashMap<Integer, Triangle> map
            = new LinkedHashMap<Integer, Triangle>();
 
        // Add elements to LinkedHashMap
        map.put(1, new Triangle("Equilateral triangle"));
        map.put(2, new Triangle("Isosceles triangle"));
        map.put(3, new Triangle("Right angled triangle"));
 
        // Print map
        System.out.println(map);
    }
}
Producción

{1=Triangle@214c265e, 2=Triangle@448139f0, 3=Triangle@7cca494b}

Pero podemos imprimirlo en un formato legible por humanos anulando el método toString() en la clase personalizada. A continuación se muestra la implementación:

Ejemplo 2:

Java

// Java program to demonstrate how to print LinkedHashMap of
// custom class objects
import java.util.*;
 
// Custom class
class Triangle {
 
    private String type;
 
    // Constructor
    public Triangle(String type) { this.type = type; }
 
    // Override toString method to print human readable
    // information about the object
 
    public String toString() { return this.type; }
}
 
public class GFG {
 
    public static void main(String[] args)
    {
 
        // New LinkedHashMap of custom class Triangle
        LinkedHashMap<Integer, Triangle> map
            = new LinkedHashMap<Integer, Triangle>();
 
        // Add elements to LinkedHashMap
        map.put(1, new Triangle("Equilateral triangle"));
        map.put(2, new Triangle("Isosceles triangle"));
        map.put(3, new Triangle("Right angled triangle"));
 
        // Print map
        System.out.println(map);
    }
}
Producción

{1=Equilateral triangle, 2=Isosceles triangle, 3=Right angled triangle}

Método 2 (usando Map.Entry)

Podemos imprimir LinkedHashMap que contenga objetos de clase personalizados en Java usando Entry. A continuación se muestra la implementación:

Ejemplo:

Java

// Java program to demonstrate how to print LinkedHashMap of
// custom class objects
import java.util.*;
 
// Custom class
class Triangle {
 
    private String type;
 
    // Constructor
    public Triangle(String type) { this.type = type; }
 
    // Override toString method to print human readable
    // information about the object
 
    public String toString() { return this.type; }
}
 
public class GFG {
 
    public static void main(String[] args)
    {
 
        // New LinkedHashMap of custom class Triangle
        LinkedHashMap<Integer, Triangle> map
            = new LinkedHashMap<Integer, Triangle>();
 
        // Add elements to LinkedHashMap
        map.put(1, new Triangle("Equilateral triangle"));
        map.put(2, new Triangle("Isosceles triangle"));
        map.put(3, new Triangle("Right angled triangle"));
 
        // Print map using Entry
        for (Map.Entry<Integer, Triangle> entry :
             map.entrySet()) {
            System.out.println("Key: " + entry.getKey()
                               + ", Value: "
                               + entry.getValue());
        }
    }
}
Producción

Key: 1, Value: Equilateral triangle
Key: 2, Value: Isosceles triangle
Key: 3, Value: Right angled triangle

Publicación traducida automáticamente

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