Java:Map(一)——概述、方法

0、说明

Map是一种Key-Value映射表,作用是通过Key快速查找它的Value

关于Map,假设有一个map

Map<String , Student> map = new HashMap<> ();

对它一些基本用法是:

  • map.put( Key , Value )map加入一个Key-Value对;
  • Value = map.get( Key ):获得map中的Key对应的Value;如果Key不存在,就返回null
  • boolean containsKey( Key ):查询Key是否存在;

List类似,Map是一个接口,最常用的实现类是HashMap

1、模块:java.util.HashMap、java.util.Map

2、方法

Map是一个接口,在使用这些方法时必须先用它来承接一个具体类。

Map<String , Student> map = new HashMap<> ();

2.1、静态方法:用法Map.xxx( ... )

方法返回值

方法

说明

不可修改(Unmodifiable):只读

Map<K,V> copyOf​(Map<? extends K,​? extends V> map) 返回某个Map的副本,返回的副本不可修改
Map.Entry<K,V> entry(K k , V v) 返回一个由指定的K-V对构成的不可修改的Map.Entry
Map<K,V> of() 返回一个空Map
Map<K,V> of(K k1 , V v1 , K k2 ,V v2 , ...) 由给定的一系列K-V构成一个Map
Map<K,V> ofEntries​(Map.Entry<? extends K,​? extends V>... entries) 返回一个Map.Entry中的K-V构成的不可修改的Map

2.1、实例方法:用法map.xxx( ... )

方法返回值

方法

说明

void clear() 移除Map中的所有K-V
V compute​(K key, BiFunction<? super K,​? super V,​? extends V> remappingFunction) 对Map中的Key采用某个函数重新计算Value并写入(如果计算不出Value就返回null)
V

computeIfAbsent​(K key, Function<? super K,​? extends V> mappingFunction)

对Map中所有Value为null的Key采用某个函数重新计算并写入Value值
V computeIfPresent​(K key, BiFunction<? super K,​? super V,​? extends V> remappingFunction) 对Map中所有Value非null的Key采用某个mapping函数重新计算并写入Value值
boolean

containsKey​(Object key)

containsValue​(Object value)

如果Map中包含指定的Key/Value,就返回true
Set<Map.Entry<K,​V>> entrySet() 返回Map中所有K-V构成的Map.Entry的Set(刚方法常用于遍历Map,用法见3.2节)
boolean equals​(Object o) 比较当前map和元素o是否相等(具体实现见Map(二)
void
forEach​(BiConsumer<? super K,​? super V> action)
实现这个方法,就可以用foreach语法遍历Map了
V get​(Object key) 获取Key对应的Value,没有则返回null
V getOrDefault​(Object key, V defaultValue) 获取Key对应的Value,没有则返回默认值
int hashCode() 返回Map的hash code
boolean isEmpty() Map为空时返回true
Set<K> keySet() 返回所有Key构成的Set
V merge​(K key, V value, BiFunction<? super V,​? super V,​? extends V> remappingFunction) 如果指定的Key没有映射到指定的Value,就用某个重映射函数将它与某个Value映射起来
V put​(K key, V value) 向Map中加入一个K-V
void putAll​(Map<? extends K,​? extends V> m) 将另一个Map中的所有K-V加入到这个Map中
V putIfAbsent​(K key, V value) 如果指定的Key没有映射到指定的Value,则返回null,否则返回这个Value

V

boolean

remove​(Object key)

remove​(Object key, Object value)

移除并返回指定的K对应的V(如果存在)

移除指定的K-V对

V

boolean

replace​(K key, V value)

replace​(K key, V oldValue, V newValue)

修改Map中的指定Key的Value为指定的Value
void replaceAll​(BiFunction<? super K,​? super V,​? extends V> function) 对Map中的所有K-V用指定函数进行修改并重映射
int size() 返回Map中的K-V对数量
Collection<V> values() 返回Map中所有Value构成的Collection

3、遍历Map

3.1、遍历Key

要遍历Key可以使用for each循环遍历Map实例的keySet()方法返回的Set,它包含了所有的Key

for( String key : map.keySet() ){
    Integer value = map.get(key);
    System.out.println(key + " = " + value);
}

3.2、同时遍历KeyValue

可以用for each循环遍历Map对象的entrySet()方法返回的Map.Entry<T , K>集合,它包含每一个Key-Value映射:

可以使用它的getKey(...)getValue(...)方法来获取这个K-V对应的KeyValue

for(Map.Entry<String , Integer> entry : map.entrySet() ){
    String key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key + " = " + value);
}

遍历时,Key的顺序不一定和开始放入的顺序相同。

posted @   ShineLe  阅读(377)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示