Duda con arrayList y HashMap

Iniciado por Hartigan, 22 Noviembre 2011, 14:40 PM

0 Miembros y 2 Visitantes están viendo este tema.

Hartigan

Hola os comento:

Tengo un hashMap cuya clave es un String y cuyo valor es un ArrayList<String> que contiene diversas palabras

Osea:
Código (java) [Seleccionar]
Map<String, List<String>> multiMapa = new HashMap<String, List<String>>();

Ahora lo que hago es que si encuentro una clave en el hashMap (usando containsKey()) quiero obtener los elementos del arrayList de esa clave y meterlos en otro ArrayList distinto.

Como puedo hacerlo?

valdría?:

Código (java) [Seleccionar]
if(multiMapa.containsKey(anagrama)) {
            List<String> lista = new ArrayList<String>();
            lista = multiMapa.get(anagrama);
}



Obtengo así el arrayList (el Value del hashMap) y puedo igualarlo directamente al nuevo arrayList llamado lista???


gracias de antemano.

adastra

Map<String, List<String>> multiMapa = new HashMap<String, List<String>>();
List<String> listaEncontrada = new ArrayList<String>();
for(String clave : multiMapa.keySet()) {
  if(clave.equals("CRITERIO_BUSQUEDA")) {
    listaEncontrada = (List<String>)multiMapa.get(clave);
    break;
  }
}

if(listaEncontrada != null && !listaEncontrada.isEmpty()) {
for(String valor : listaEncontrada) {
    System.out.println("Valor: "+valor);
}
}

Hartigan

Vale muchas gracias, al final lo que hice fue esto:

Código (java) [Seleccionar]

...
Map<String, List<String>> multiMapa = new HashMap<String, List<String>>();
...
public void buscar_Anagramas(String anagrama) {
        //Comprobamos si nuestro anagrama está en el hashmap
        List<String> lista = new ArrayList<String>();
        if(multiMapa.containsKey(anagrama)) {
            lista = (List<String>)(multiMapa.get(anagrama));
           
        }
        else
            System.out.println("\n No existe ninguna coincidencia\n\n");
       
       
        imprimir_Coincidencias(lista);
       
       
    }


Parece que me funciona, así que bien. xD

saludos y gracias de nuevo.

adastra

De hecho, es mejor lo que has hecho, manualmente recorría el ciclo y posteriormente comparaba, el método "containsKey" hace lo mismo, pero en teoría es más eficiente...
Así que como lo tienes esta bien.