【发布时间】:2011-09-02 16:59:33
【问题描述】:
好的,所以我对这些 HashMaps 不熟悉,但对 LinkedLists 和 HashMaps 有一些想法。 如果您能给我一些关于 LinkedHashMap 的简单解释,那就太好了,就像标题中那样,这是否意味着我们明确地将它定义为某种类型?
【问题讨论】:
标签: java generics collections linked-list
好的,所以我对这些 HashMaps 不熟悉,但对 LinkedLists 和 HashMaps 有一些想法。 如果您能给我一些关于 LinkedHashMap 的简单解释,那就太好了,就像标题中那样,这是否意味着我们明确地将它定义为某种类型?
【问题讨论】:
标签: java generics collections linked-list
LinkedHashMap 是一个组合 哈希表和链表。它有一个 可预测的迭代顺序(a la 链表),但检索速度 是 HashMap 的。的顺序 迭代由 插入顺序,所以你会得到 键/值按它们的顺序返回 已添加到此地图。你必须的 这里有点小心,因为重新插入 一键不改原来的 顺序。
k 代表 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
*/
【讨论】:
它是两种数据结构的混合体,LinkedList,其中插入顺序通过将元素添加到可以访问其直接邻居的节点列表的末尾来保留,HashMap,或@ 987654323@ 使用存储桶数组 Lists,其中键的 hashcode() 的模除余数确定要查询位于该存储桶的内容列表中的键的 equals() 方法的起始存储桶。
优点是由于LinkedList的性质,你可以按插入顺序遍历HashMap中的现有元素,并且可以在键查找中快速跳转到正确的桶(节省大量时间对于大型集合),如果您有元素的键。
【讨论】:
这称为泛型。 k 和 v 必须替换为您要存储的实际类型。
要创建一个将整数映射到字符串上的 HashMap,您可以编写:
LinkedHashMap<Integer,String>
【讨论】:
LinkedHashMap 键的存储方式类似于 ArrayList 或数组,它们按照插入的顺序存储。 普通的 HashMap 按其哈希码排序。
k = 键 v = 价值 它们可以是任何类型。
【讨论】:
最大的不同是LinkedHashMap是有序的。如果您使用迭代器,则键和值将按照它们添加到映射中的相同顺序。 HashMap 不保证它们返回的顺序。
【讨论】:
在维基百科上了解Generics in Java。
【讨论】: