什么是LinkedHashMap <k,v =“”>?</k,>

时间:2011-05-26 15:10:35

标签: java generics collections linked-list

好的,所以我是这些HashMaps的新手,但对LinkedLists和HashMaps有所了解。 如果你能给我一些关于LinkedHashMap的简单解释并且在titile中这意味着我们明确地将它定义为某种类型会很好吗?

6 个答案:

答案 0 :(得分:30)

  

LinkedHashMap是一个组合   哈希表和链表。它有一个   可预测的迭代顺序(a la   链表),但检索速度   是HashMap的。的顺序   迭代是由   插入订单,所以你会得到   键/值按它们的顺序返回   被添加到此地图。你必须的   这里有点小心,因为重新插入   一把钥匙不会改变原件   顺序。

代表Key,v代表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
*/

答案 1 :(得分:11)

它是两个数据结构的混合体,LinkedList,其中通过向可以访问其直接邻居的节点列表的末尾添加元素来保留插入顺序,以及HashMap ,或使用数组Map的{​​{1}},其中密钥Lists的模数除法余数确定要查询密钥的hashcode()方法的起始存储区那个桶的内容列表就在那里。

优点是,由于equals()性质,您可以按插入顺序遍历HashMap中的现有元素,并且您可以在键查找中快速跳转到正确的存储区(保存如果您拥有元素的键,那么大量的时间(大型集合)。

答案 2 :(得分:2)

这称为泛型。 kv必须替换为您要存储的实际类型。 要创建一个HashMap,它可以在字符串上映射整数:

 LinkedHashMap<Integer,String>

答案 3 :(得分:2)

LinkedHashMap键与ArrayLists或数组的相似之处在于它们按插入顺序存储的方式。 普通HashMaps按其哈希码排序。

k =键 v =值 它们可以是任何类型。

答案 4 :(得分:1)

最大的区别是LinkedHashMap是有序的。如果使用迭代器,则键和值的顺序与它们添加到地图的顺序相同。 HashMap无法保证返回的顺序。

答案 5 :(得分:1)

阅读维基百科上的Generics in Java