好的,所以我是这些HashMaps的新手,但对LinkedLists和HashMaps有一些了解。如果您能给我一些关于 LinkedHashMap 的简单解释,那就太好了,就像在标题中一样,这是否意味着我们明确地将其定义为某种类型?
LinkedHashMap 是 哈希表和链表。它有一个 可预测的迭代顺序(a la 链表(,但检索速度 是哈希图的。的顺序 迭代由 广告顺序,因此您将获得 键/值按其顺序返回 被添加到此地图中。你必须是 这里有点小心,因为重新插入 密钥不会更改原始密钥 次序。
k 代表键,v 代表值。
/*
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
,或者一个使用存储桶Lists
数组的Map
,其中键hashcode()
的模除余数确定要查询键的equals()
方法的起始桶位于该存储桶的内容列表中。
优点是,由于LinkedList
性质,您可以按插入顺序在HashMap
中遍历现有元素,如果您有元素的键,则可以在键查找中快速跳转到正确的存储桶(为大型集合节省大量时间(。
称为泛型。 k
和v
必须替换为要存储的实际类型。要创建一个在字符串上映射整数的哈希映射,您需要编写:
LinkedHashMap<Integer,String>
LinkedHashMap 键类似于 ArrayLists 或数组,因为它们的存储方式是按插入顺序排列的。普通哈希图按其哈希代码排序。
k = 键v = 值它们可以是任何类型。
最大的区别是LinkedHashMap是有序的。 如果使用迭代器,则键和值的添加顺序将与添加到映射中的顺序相同。 HashMap不保证它们的返回顺序。
在维基百科上阅读有关 Java 中的泛型的信息。