java学习笔记54:Map介绍使用

Map
void clear() //从此映射中删除所有映射(可选操作)。  
default V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) //尝试计算指定键及其当前映射值的映射(如果没有当前映射, null )。  
default V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) //如果指定的键尚未与值关联(或映射到 null ),则尝试使用给定的映射函数计算其值并将其输入此映射,除非 null 。
default V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V>  //remappingFunction) 如果指定键的值存在且为非null,则尝试在给定键及其当前映射值的情况下计算新映射。  
boolean containsKey(Object key) //如果此映射包含指定键的映射,则返回 true 。  
boolean containsValue(Object value)  //如果此映射将一个或多个键映射到指定值,则返回 true 。  
static <K,V>  Map<K,V> copyOf(Map<? extends K,? extends V> map) //返回包含给定Map的条目的 unmodifiable Map 。  
static <K,V> Map.Entry<K,V> entry(K k, V v) //返回包含给定键和值的不可修改的Map.Entry 。  
Set<Map.Entry<K,V>> entrySet() //返回此映射中包含的映射的Set视图。  
boolean equals(Object o) //将指定对象与此映射进行比较以获得相等性。  
default void forEach(BiConsumer<? super K,? super V> action) //对此映射中的每个条目执行给定操作,直到处理完所有条目或操作引发异常。  
V get(Object key) //返回指定键映射到的值,如果此映射不包含键的映射,则返回 null 。  
default V getOrDefault(Object key, V defaultValue) //返回指定键映射到的值,如果此映射不包含键的映射,则返回 defaultValue 。  
int hashCode() //返回此映射的哈希码值。  
boolean isEmpty() //如果此映射不包含键 - 值映射,则返回 true 。  
Set<K> keySet() //返回此映射中包含的键的Set视图。  
default V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) //如果指定的键尚未与值关联或与null关联,则将其与给定的非空值关联。  
static <K,V> Map<K,V> of() //返回包含零映射的不可修改映射。  
static <K,V> Map<K,V> of(K k1, V v1) //返回包含单个映射的不可修改的映射。  
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2) //返回包含两个映射的不可修改的映射。   
static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries) //返回包含从给定条目中提取的键和值的不可修改的映射。  
V put(K key, V value) //将指定的值与此映射中的指定键相关联(可选操作)。  
void putAll(Map<? extends K,? extends V> m) //将指定映射中的所有映射复制到此映射(可选操作)。 
default V putIfAbsent(K key, V value) //如果指定的键尚未与值关联(或映射到 null ), null其与给定值关联并返回 null ,否则返回当前值。  
V remove(Object key) //如果存在,则从该映射中移除键的映射(可选操作)。  
default boolean remove(Object key, Object value) //仅当指定键当前映射到指定值时才删除该条目的条目。  
default V replace(K key, V value) //仅当指定键当前映射到某个值时,才替换该条目的条目。  
default boolean replace(K key, V oldValue, V newValue) //仅当前映射到指定值时,才替换指定键的条目。  
default void replaceAll(BiFunction<? super K,? super V,? extends V> function) //将每个条目的值替换为在该条目上调用给定函数的结果,直到所有条目都已处理或函数抛出异常。  
int size() //返回此映射中键 - 值映射的数量。  
Collection<V> values() //返回此映射中包含的值的Collection视图。 
1 HashMap
HashMap() //使用默认初始容量(16)和默认加载因子(0.75)构造一个空 HashMap 。  
HashMap(int initialCapacity) //使用指定的初始容量和默认加载因子(0.75)构造一个空 HashMap 。  
HashMap(int initialCapacity, float loadFactor) //使用指定的初始容量和加载因子构造一个空 HashMap 。  
HashMap(Map<? extends K,? extends V> m) //构造一个新的 HashMap ,其映射与指定的 Map相同。
Object clone() //返回此 HashMap实例的浅表副本:未克隆键和值本身。
V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) //尝试计算指定键及其当前映射值的映射(如果没有当前映射, null )。  
V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) //如果指定的键尚未与值关联(或映射到 null ),则尝试使用给定的映射函数计算其值并将其输入此映射,除非 null 。  
V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) //如果指定键的值存在且为非null,则尝试在给定键及其当前映射值的情况下计算新映射。
V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) //如果指定的键尚未与值关联或与null关联,则将其与给定的非空值关联。  
2 HashTable
Hashtable() //使用默认初始容量(11)和加载因子(0.75)构造一个新的空哈希表。  
Hashtable(int initialCapacity) //使用指定的初始容量和默认加载因子(0.75)构造一个新的空哈希表。
Hashtable(int initialCapacity, float loadFactor) //使用指定的初始容量和指定的加载因子构造一个新的空哈希表。  
Hashtable(Map<? extends K,? extends V> t) //构造一个新的哈希表,其具有与给定Map相同的映射。  
Object clone() 创建此哈希表的浅表副本。  
V compute(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) //尝试计算指定键及其当前映射值的映射(如果没有当前映射, null )。  
V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction) //如果指定的键尚未与值关联(或映射到 null ),则尝试使用给定的映射函数计算其值并将其输入此映射,除非 null 。  
V computeIfPresent(K key, BiFunction<? super K,? super V,? extends V> remappingFunction) //如果指定键的值存在且为非null,则尝试在给定键及其当前映射值的情况下计算新映射。 
V merge(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction) //如果指定的键尚未与值关联或与null关联,则将其与给定的非空值关联。
protected void rehash() //增加此哈希表的容量并在内部重新组织,以便更有效地容纳和访问其条目。  
3 TreeMap
TreeMap() //使用其键的自然顺序构造一个新的空树图。  
TreeMap(Comparator<? super K> comparator) //构造一个新的空树图,根据给定的比较器排序。  
TreeMap(Map<? extends K,? extends V> m) //构造一个新的树映射,其中包含与给定映射相同的映射,根据其键的 自然顺序排序 。  
TreeMap(SortedMap<K,? extends V> m) //构造一个包含相同映射的新树映射,并使用与指定有序映射相同的顺序。  
Map.Entry<K,V> ceilingEntry(K key) //返回与大于或等于给定键的最小键关联的键 - 值映射,如果没有此键,则 null 。  
K ceilingKey(K key) //返回大于或等于给定键的 null键,如果没有这样的键,则 null 。  
Object clone() //返回此 TreeMap实例的浅表副本。
NavigableSet<K> descendingKeySet() //返回此映射中包含的键的反向顺序NavigableSet视图。  
NavigableMap<K,V> descendingMap() //返回此映射中包含的映射的逆序视图。  
Map.Entry<K,V> firstEntry() //返回与此映射中的最小键关联的键 - 值映射,如果映射为空,则 null 。  
K firstKey() //返回此映射中当前的第一个(最低)键。  
Map.Entry<K,V> floorEntry(K key) //返回与小于或等于给定键的最大键关联的键 - 值映射,如果没有此键,则 null 。  
K floorKey(K key) //返回小于或等于给定键的最大键,如果没有这样的键,则 null 。  
SortedMap<K,V> headMap(K toKey) //返回此映射的部分视图,其键严格小于 toKey 。  
NavigableMap<K,V> headMap(K toKey, boolean inclusive) //返回此映射的部分视图,其键小于(或等于,如果 inclusive为真) toKey 。  
Map.Entry<K,V> higherEntry(K key) //返回与严格大于给定键的最小键关联的键 - 值映射,如果没有此键,则 null 。  
K higherKey(K key) //返回严格大于给定键的最小键,如果没有这样的键,则返回 null  
K lastKey() //返回此映射中当前的最后一个(最高)键。  
Map.Entry<K,V> lowerEntry(K key) //返回与严格小于给定键的最大键相关联的键 - 值映射,如果没有这样的键,则 null 。  
K lowerKey(K key) //返回严格小于给定键的最大键,如果没有这样键,则返回 null 。  
NavigableSet<K> navigableKeySet() //返回此映射中包含的键的NavigableSet视图。  
Map.Entry<K,V> pollFirstEntry() //删除并返回与此映射中的最小键关联的键 - 值映射,如果映射为空,则 null 。  
Map.Entry<K,V> pollLastEntry() //删除并返回与此映射中的最大键关联的键 - 值映射,如果映射为空,则 null 。 
NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) //返回此映射部分的视图,其键范围为 fromKey至 toKey 。  
SortedMap<K,V> subMap(K fromKey, K toKey) //返回此映射部分的视图,其键的范围从 fromKey (包括 toKey )到 toKey (独占)。  
SortedMap<K,V> tailMap(K fromKey) //返回此映射的部分视图,其键大于或等于 fromKey 。  
NavigableMap<K,V> tailMap(K fromKey, boolean inclusive) //返回此映射的部分视图,其键大于(或等于,如果 inclusive为真) fromKey 。  
4总结

HashMap:非线程安全

HashMap:基于哈希表实现。使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()]为了优化HashMap空间的使用,您可以调优初始容量和负载因子。

TreeMap:非线程安全基于红黑树实现。TreeMap没有调优选项,因为该树总处于平衡状态。

5 适用场景

HashMap和HashTable:HashMap去掉了HashTable的contains方法,但是加上了containsValue()和containsKey()方法。HashTable同步的,而HashMap是非同步的,效率上比HashTable要高。HashMap允许空键值,而HashTable不允许。

HashMap:适用于Map中插入、删除和定位元素。

Treemap:适用于按自然顺序或自定义顺序遍历键(key)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值