2011-05-26 13 views
10

Ok, soy nuevo en estos HashMaps pero tengo alguna idea sobre LinkedLists y HashMaps. Sería grandioso si pudiera darme alguna explicación simple con respecto a LinkedHashMap y como en el título ¿significa esto que estamos definiendo explícitamente que es de algún tipo?¿Qué es LinkedHashMap <k, v>?

Respuesta

24

Un LinkedHashMap es una combinación de tabla hash y la lista enlazada. Tiene un orden de iteración predecible de (a la lista enlazada ), sin embargo, la velocidad de recuperación es la de un HashMap. El orden de la iteración está determinado por el orden de inserción , por lo que obtendrá las claves/valores en el orden en que se agregaron a este Mapa. Tiene que ser un poco cuidadoso aquí, ya que volver a insertar una clave no cambia el orden original .

k significa Key yv for Value.

/* 
    Simple Java LinkedHashMap example 
    This simple Java Example shows how to use Java LinkedHashMap. 
    It also describes how to add something to LinkedHashMap and how to 
    retrieve the value added from LinkedHashMap. 
*/ 

import java.util.LinkedHashMap; 

public class JavaLinkedHashMapExample { 

public static void main(String[] args) { 

//create object of LinkedHashMap 
LinkedHashMap lHashMap = new LinkedHashMap(); 

/* 
    Add key value pair to LinkedHashMap using 
    Object put(Object key, Object value) method of Java LinkedHashMap class, 
    where key and value both are objects 
    put method returns Object which is either the value previously tied 
    to the key or null if no value mapped to the key. 
    */ 

lHashMap.put("One", new Integer(1)); 
lHashMap.put("Two", new Integer(2)); 

/* 
    Please note that put method accepts Objects. Java Primitive values CAN NOT 
    be added directly to LinkedHashMap. It must be converted to corrosponding 
    wrapper class first. 
    */ 

//retrieve value using Object get(Object key) method of Java LinkedHashMap class 
Object obj = lHashMap.get("One"); 
System.out.println(obj); 

/* 
    Please note that the return type of get method is an Object. The value must 
    be casted to the original class. 
    */ 


} 
} 
/* 
Output of the program would be 
1 
*/ 
+0

gracias por la explicación detallada – Johnydep

+0

@Johnydep de nada! – evilone

+0

Esto es exactamente lo que necesito. ¡Gracias por una respuesta detallada! :) – Dino55

0

La mayor diferencia es que LinkedHashMap está ordenado. Si usa un iterador, las claves y los valores estarán en el mismo orden en que se agregaron al mapa. HashMap no tiene garantía del orden en que se devuelven.

2

Esto se llama genéricos. k y v se deben reemplazar por el tipo real que desea almacenar. Para crear un HashMap que mapea enteros en cadenas que iba a escribir:

LinkedHashMap<Integer,String> 
1

Las claves LinkedHashMap son similares a ArrayLists o arrays en la forma en que se almacenan en el orden en que se insertan. Los HashMaps normales se ordenan por código hash.

k = clave v = valor Pueden ser de cualquier tipo.

9

Es un híbrido de dos estructuras de datos, un LinkedList, donde el orden de inserción se conserva mediante la adición de elementos al final de una lista de nodos que tienen acceso a sus vecinos inmediatos, y una HashMap, o una Map que utiliza una array del cubo Lists, donde un módulo de división restante de la clave hashcode() determina el depósito inicial para consultar el método equals() de las claves que se encuentran en la lista de contenidos de ese depósito.

La ventaja es que se puede caminar los elementos existentes en una HashMap en orden de inserción, debido a la naturaleza LinkedList, y se puede saltar rápidamente a la cubeta correcta en una búsqueda de claves (ahorra un montón de tiempo para un gran colección) si tiene la clave del elemento.

Cuestiones relacionadas