Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Hartigan en 22 Noviembre 2011, 14:40 pm



Título: Duda con arrayList y HashMap
Publicado por: Hartigan en 22 Noviembre 2011, 14:40 pm
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
  1. 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
  1. if(multiMapa.containsKey(anagrama)) {
  2.            List<String> lista = new ArrayList<String>();
  3.            lista = multiMapa.get(anagrama);
  4. }


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


gracias de antemano.


Título: Re: Duda con arrayList y HashMap
Publicado por: adastra en 22 Noviembre 2011, 15:37 pm
Código:
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);
 }
}


Título: Re: Duda con arrayList y HashMap
Publicado por: Hartigan en 23 Noviembre 2011, 01:40 am
Vale muchas gracias, al final lo que hice fue esto:

Código
  1. ...
  2. Map<String, List<String>> multiMapa = new HashMap<String, List<String>>();
  3. ...
  4. public void buscar_Anagramas(String anagrama) {
  5.        //Comprobamos si nuestro anagrama está en el hashmap
  6.        List<String> lista = new ArrayList<String>();
  7.        if(multiMapa.containsKey(anagrama)) {
  8.            lista = (List<String>)(multiMapa.get(anagrama));
  9.  
  10.        }
  11.        else
  12.            System.out.println("\n No existe ninguna coincidencia\n\n");
  13.  
  14.  
  15.        imprimir_Coincidencias(lista);
  16.  
  17.  
  18.    }

Parece que me funciona, así que bien. xD

saludos y gracias de nuevo.


Título: Re: Duda con arrayList y HashMap
Publicado por: adastra en 23 Noviembre 2011, 01:48 am
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.