Java – 集合Map
简介
Map是集合中双列集合的根类,它是一个接口,因此不能直接创建Map 实例对象,但是其下有三个子类,分别是 HashMap, LinkedHashMap, TreeMap.
单列集合是指,一个数组中只有值,没有对应的键,可能有索引,或没有索引。
双列集合是指,每一个值,都有其对应的唯一的键,俗称键值对。
Map常用API
添加 put()
添加元素。
语法:
V put(K key, V value)
注意:当调用 put() 方法时,put() 会返回对应的 value 值
当map对象中不存在这个键时,put() 返回 null
当map对象中存在这个键时,put() 新的值会覆盖旧的value值,并返回旧的value值
删除 remove()
根据键删除键值对元素。
语法:
V remove(Object key)
注意:删除某个键时,remove() 方法会返回被删除的那个键值对中的 value 值。
清空 clear()
移除所有的键值对元素。
语法:
void clear()
包含key containsKey()
判断集合是否包含指定的键。
语法:
boolean containsKey(Object key)
包含value containsValue()
判断集合是否包含指定的值。
语法:
boolean containsValue(Object value)
是否为空 isEmpty()
判断集合是否为空。
语法:
boolean isEmpty()
长度 size()
集合的长度,也就是集合中键值对的个数
语法:
int size()
Map的遍历方式
键找值
通过键找值的方式,从三种方法上遍历Map
Map<String, String> map = new HashMap<>();
map.put("小明", "小红");
map.put("常威", "来福");
map.put("富豪", "富婆");
Set<String> keys = map.keySet();
// 第一种遍历方法 迭代器
Iterator<String> kit = keys.iterator();
while (kit.hasNext()) {
String value = kit.next();
System.out.println(value);
}
// 第二种遍历方法 增强 for
for (String key : keys) {
System.out.println(key);
}
// 第三种遍历方法 Labmda
keys.forEach(s -> System.out.println(s));
键值对
通过键值对的方式来遍历Map,通过遍历一个键值对对象entry
然后通过 getKey() 和 getValue() 方法取得 entry对象的键和值
Map<String, String> map = new HashMap<>();
map.put("小明", "小红");
map.put("常威", "来福");
map.put("富豪", "富婆");
Set<Map.Entry<String,String >> entrys = map.entrySet();
// 使用 迭代器 进行遍历
Iterator<Map.Entry<String, String>> ite = entrys.iterator();
while (ite.hasNext()){
Map.Entry<String,String> entry = ite.next();
System.out.println(entry.getKey()+" = "+entry.getValue());
}
// 使用 增强for 进行遍历
for (Map.Entry<String, String> entry : entrys) {
System.out.println(entry.getKey()+" = "+entry.getValue());
}
// 使用 Lambda 进行遍历
entrys.forEach(entry->{
System.out.println(entry.getKey()+" = "+entry.getValue());
});
Labmda表达式
Map 实现了一个接口BiConsumer,BiConsumer 是用于遍历 Map 对象的接口方法 accept(),accept() 方法传入两个参数,分别为 key和value
map.forEach(new BiConsumer<String, String>() {
@Override
public void accept(String key, String value) {
System.out.println(key + " = " + value);
}
});
它支持Lambda简化方式进行遍历
map.forEach((key, value) -> System.out.println(key + " = " + value));
Map的子类说明
参照下面文章阅读对应子类的使用说明
![](https://www.tzming.com/wp-content/uploads/2022/10/zfb.png)
![](https://www.tzming.com/wp-content/uploads/2022/10/wx.png)
共有 0 条评论