es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo insertar valores duplicados en un mapa

Tengo la siguiente lista que contiene valores:

List<customer> list = new ArrayList<>();

list.add(new Customer("ram", "Mumbai", 1234));

list.add(new Customer("veer", "Mumbai", 8467));

list.add(new Customer("jai", "Delhi", 5242));

Tengo que iterar esta lista e insertarla en un mapa de tal manera que la dirección sea la clave y el objeto del cliente sea el valor del mapa, pero el problema es que, para la misma clave, si insertamos un valor duplicado, está reemplazando los valores existentes. ¿Cómo puedo insertar un objeto en lugar de reemplazarlo?

Map<string, customer=""> map = new HashMap<>();

Buscando aportes, gracias de antemano.</string,>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para insertar el objeto cliente en lugar de reemplazar los valores existentes en el mapa, podemos utilizar el método putIfAbsent proporcionado por la interfaz Map en Java.

    Aquí está cómo podemos implementarlo:

    List<customer> list = new ArrayList<>();
    
    list.add(new Customer("ram", "Mumbai", 1234));
    list.add(new Customer("veer", "Mumbai", 8467));
    list.add(new Customer("jai", "Delhi", 5242));
    
    Map<string, customer=""> map = new HashMap<>();
    
    for (Customer c : list) {
        map.putIfAbsent(c.getAddress(), c);
    }
    

    Aquí, iteramos sobre la lista de clientes utilizando un bucle for-each, y para cada cliente, verificamos si el mapa ya contiene una entrada con la dirección del cliente como clave utilizando el método putIfAbsent. Si la clave aún no existe en el mapa, se agrega el objeto cliente como valor para esa clave. Si la clave ya existe, el valor existente no se reemplaza.

    Después de que este bucle se complete, el mapa contendrá todos los objetos cliente con sus direcciones como claves, y se ignorarán los valores duplicados.</string,>

Comments are closed.