K -钥匙的Map保持型
V -映射的值的类型
public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>
哈希表和相关的Map接口列表实现,具有可预测的迭代顺序。这不同于HashMap实施,它维护了一个链表贯穿其所有作品。这个链表定义迭代顺序,通常的顺序钥匙插入Map(插入顺序)。注意插入顺序不是关键是重新插入到Map的影响。(一个关键k重新插入到Mapm如果m.put(k, v)时调用将返回true m.containsKey(k)立即调用。之前)
这个实现备件客户从指定,一般混沌序提供HashMap(和Hashtable),而不承担增加的成本与TreeMap。它可以被用来产生一个具有相同的顺序为原来的Map的副本,无论原来的Map的实施:
void foo(图m){Map复制=新LinkedHashMap(M);…}这种技术如果一个模块的输入,需要一份Map是特别有用的,后来返回结果的顺序是:确定的副本。(客户一般喜欢有东西返回的顺序一样了。)
一个特殊的constructor提供创建链接的哈希映射的迭代是为了在该条目最后访问,从最近最少访问最近(存取顺序)。这种Map是非常适合于构建LRU缓存。调用put,putIfAbsent,get,getOrDefault,compute,computeIfAbsent,computeIfPresent,或访问相应的条目merge方法结果(假设它存在的调用完成后)。的replace方法只能导致入口访问如果值代替。的putAll方法在指定的Map生成每个映射一个入口进入,按关键值的映射是由指定的Map的进入提供了迭代器。没有其他方法生成入口访问。尤其在集合视图操作做不影响的支持Map迭代顺序。
的removeEldestEntry(Map.Entry)重写方法征收政策去除陈旧的映射时自动添加新的映射图。
这个类提供了所有可选的Map操作,并允许null元素。像HashMap,它的基本运算提供了稳定的性能(add,contains和remove),假设哈希函数的适当分散元素在水桶。性能可能会略低于HashMap,由于维护链表的附加费用,但有一个例外:在一LinkedHashMap收集意见迭代需要Map的大小比例时,无论其能力。在HashMap迭代可能是昂贵的,需要时间来容量比例。
链接的哈希映射的两个参数影响它的性能:初始容量和负载因子。他们是精确的定义为HashMap。注意,然而,选择初始能力值过高的惩罚是不太严重的这类HashMap相比,对于这类迭代次数不受力。
请注意,此实现不同步。如果多个线程访问链接的哈希映射的同时,并至少有一个线程修改Map的结构,它必须是同步的外部。这通常是通过同步的一些对象,自然将Map完成。如果该对象不存在,Map应该是“包裹”使用Collections.synchronizedMap方法。最好的做法是在创建时,防止意外的非同步访问的Map:
MapM =集合。synchronizedmap(新LinkedHashMap(…));结构修改的任何操作,添加或删除一个或多个映射,在接入情况下有序联系哈希映射,影响迭代顺序。在插入有序的链接哈希映射中,仅仅改变与已经包含在Map中的一个关键的值不是一个结构修改。 在访问命令链接的哈希映射,只是查询Mapget是结构上的修改。)
通过对收集的iterator方法返回的迭代器的所有这类的集合视图的方法返回的是快速失败:如果Map的结构修改,迭代器创建后的任何时间,以任何方式除了通过迭代器的remove方法,迭代器将抛出一个ConcurrentModificationException。因此,在并发修改的面前,迭代器失败迅速和干净,而不是冒着任意的,非确定性的行为在未来的一个不确定的时间。
注意迭代器不能快速失败行为得到保证的话,一般来说,不可能在不同步的并发修改的存在作出难以保证。快速失败迭代器扔ConcurrentModificationException尽最大努力的基础上。因此,要写一个程序,依靠这一例外的正确性错误:快速失败迭代器的行为只能用来检测错误。
的spliterators返回集合的spliterator法所有这类的集合视图的方法返回的是后期绑定,快速失败,并报告Spliterator.ORDERED。
这个班的一员 Java Collections Framework。
Object.hashCode(),
Collection,
Map,
HashMap,
TreeMap,
Hashtable,
Serialized Form
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>| Constructor and Description |
|---|
LinkedHashMap()
构造一个空的插入命令
LinkedHashMap实例的默认初始容量(16)和负载因子(0.75)。
|
LinkedHashMap(int initialCapacity)
构造一个空的插入命令
LinkedHashMap实例与指定的初始容量和加载因子(0.75)。
|
LinkedHashMap(int initialCapacity, float loadFactor)
构造一个空的插入命令
LinkedHashMap实例与指定的初始容量和加载因子。
|
LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)
构造一个空
LinkedHashMap实例与指定的初始容量,负载因子和订购模式。
|
LinkedHashMap(Map<? extends K,? extends V> m)
构建了一个插入命令
LinkedHashMap实例具有相同的映射为指定的Map。
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
从这个映射中移除所有的映射。
|
boolean |
containsValue(Object value)
返回
true如果映射到指定的值的一个或多个键。
|
Set<Map.Entry<K,V>> |
entrySet()
返回一个
Set映射的视图包含在这个Map。
|
void |
forEach(BiConsumer<? super K,? super V> action)
在该映射中的每个条目执行给定的操作,直到所有的条目被处理或操作抛出异常。
|
V |
get(Object key)
返回指定的键映射的值,或
null如果这个Map不包含的键映射。
|
V |
getOrDefault(Object key, V defaultValue)
返回指定的键映射的值,或
defaultValue如果这个Map不包含的键映射。
|
Set<K> |
keySet()
返回一个
Set查看键包含在这个Map。
|
protected boolean |
removeEldestEntry(Map.Entry<K,V> eldest)
返回
true如果这Map应该将其长子的入口。
|
void |
replaceAll(BiFunction<? super K,? super V,? extends V> function)
将每个条目的值替换为在该项上调用给定函数的结果,直到所有的条目都被处理或函数抛出异常。
|
Collection<V> |
values()
返回一个
Collection的价值观包含在这个Map。
|
clone, compute, computeIfAbsent, computeIfPresent, containsKey, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, sizeequals, hashCode, toStringfinalize, getClass, notify, notifyAll, wait, wait, waitcompute, computeIfAbsent, computeIfPresent, containsKey, equals, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, sizepublic LinkedHashMap(int initialCapacity,
float loadFactor)
initialCapacity -初始容量
loadFactor -负荷系数
IllegalArgumentException如果初始容量为负或负载因子是负的
public LinkedHashMap(int initialCapacity)
initialCapacity -初始容量
IllegalArgumentException -如果初始容量负
public LinkedHashMap()
public LinkedHashMap(Map<? extends K,? extends V> m)
m的映射被放置在这个Map的Map
NullPointerException -如果指定的Map是空的
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder)
initialCapacity -初始容量
loadFactor -负荷系数
accessOrder -订购模式访问顺序
true,插入顺序
false
IllegalArgumentException如果初始容量为负或负载因子是负的
public boolean containsValue(Object value)
containsValue 接口
Map<K,V>
containsValue 方法重写,继承类
HashMap<K,V>
value -它的存在价值进行测试
public V get(Object key)
null如果这个Map不包含的键映射。
更正式地说,如果这个图中包含了从关键k到价值v这样(key==null ? k==null : key.equals(k))映射,那么这个方法返回v;否则返回null。(最多只能有一个这样的映射。)
一个null返回值不必要地表明Map不包含的键映射;也有可能是Map明确地映射到null关键。的containsKey操作可用于区分这两例。
public V getOrDefault(Object key, V defaultValue)
defaultValue如果这个Map不包含的键映射。
getOrDefault 接口
Map<K,V>
getOrDefault 方法重写,继承类
HashMap<K,V>
key -关键的相关值被返回
defaultValue -键的默认映射
defaultValue如果这个Map不包含的键映射
public void clear()
protected boolean removeEldestEntry(Map.Entry<K,V> eldest)
使用:这个覆盖将允许Map成长到100个条目,然后删除大条目,每次添加一个新的条目,保持100个条目的稳定状态。
私有静态最后max_entries = 100;保护布尔removeEldestEntry(map.entry长子){返回size() > max_entries;}
这种方法通常不以任何方式修改Map,而是允许Map以它的返回值来修改自己的方向。它是这种方法修改Map直接允许的,但如果真的如此,它必须返回false(说明Map不应该尝试任何进一步的修改)。回归后的影响true在该方法修改Map是不确定的。
这个实现仅仅返回false(所以这Map的行为像一个正常的Map最大的元素是永远不会被删除)。
eldest -最近插入的入口在Map,或如果这是一个访问点Map,最近最少访问的入口。这是一项将被删除,这个方法返回
true。如果Map是空的
put或
putAll调用导致调用之前,这将是进入只是插入;换句话说,如果图中包含一个条目,大条目也是新的。
public Set<K> keySet()
Set的关键视图包含在这个Map。该集合是由Map的支持,所以对Map的变化反映在集合中,反之亦然。如果Map是在设置一个迭代过程中修改(除非通过迭代器的
remove操作),迭代的结果是不确定的。设置支持元素的去除,从Map中移除相应的映射,通过
Iterator.remove,
Set.remove,
removeAll,
retainAll,和
clear操作。它不支持
add或
addAll操作。其
Spliterator通常提供更快的时序性能却比
HashMap穷得多的并行性能。
public Collection<V> values()
Collection视图的值包含在这个Map。集合是由Map支持的,所以对Map的变化反映在集合中,反之亦然。如果Map是在集合的迭代进行修改(除非通过迭代器的
remove操作),迭代的结果是不确定的。收集支持元素的去除,从Map中移除相应的映射,通过
Iterator.remove,
Collection.remove,
removeAll,
retainAll和
clear操作。它不支持
add或
addAll操作。其
Spliterator通常提供更快的时序性能却比
HashMap穷得多的并行性能。
public Set<Map.Entry<K,V>> entrySet()
Set视图的映射包含在这个Map。该集合是由Map的支持,所以对Map的变化反映在集合中,反之亦然。如果Map是在设置一个迭代过程中修改(除非通过迭代器的
remove操作,或通过
setValue操作返回的迭代器的映射项)的迭代的结果是不确定的。设置支持元素的去除,从Map中移除相应的映射,通过
Iterator.remove,
Set.remove,
removeAll,
retainAll和
clear操作。它不支持
add或
addAll操作。其
Spliterator通常提供更快的时序性能却比
HashMap穷得多的并行性能。
public void forEach(BiConsumer<? super K,? super V> action)
Map
public void replaceAll(BiFunction<? super K,? super V,? extends V> function)
Map
replaceAll 接口
Map<K,V>
replaceAll 方法重写,继承类
HashMap<K,V>
function -功能适用于每一个条目
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.