版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013317445/article/details/82219206
MapInterface Map<K,V>
Map是一个顶层接口。
将键映射到值的对象。
一个映射不能包含重复的键。键唯一。
每个键最多只能映射到一个值。
Map和Collection的区别
Map集合的数据结构针对键有效,跟值无关。
Collection集合的数据结构针对元素有效。
Map集合的功能
- 1:添加功能
V put(K key,V value):添加元素。
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
void putAll(Map<? extends K,? extends V> m)
:添加Map集合。 - 2:删除功能
void clear():移除所有的键值对元素
V remove(Object key):如果存在,则根据键删除键值对元素,并把值返回。不存在则返回null
- 3:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
- 4:获取功能
Set<Map.Entry<K,V>> entrySet():返回键值对对象的集合
这里Map.Entry类型提供了两个方法:K getKey()获取key;V getValue()获取value。
V get(Object key):根据某个键获取值
Set<K> keySet():获取集合中所有键的集合。返回的是Set类型
Collection<V> values():获取集合中所有值的集合。返回的是Collection类型
- 5:长度功能
int size():返回集合中的键值对的对数
import java.util.Map;
import java.util.HashMap;
import java.util.Collection;
import java.util.Set;
public class MapDemo {
public static void main(String[] args){
Map<String, String> map= new HashMap<String, String>();//Map是接口,不能实例化。这里用它的实现类HashMap实例化。
//put添加元素
System.out.println(map.put("001","chen"));//null
System.out.println(map.put("006","lin"));//null
System.out.println(map.put("006","kk"));//lin
map.put("002","feng");
map.put("002","dong");
System.out.println(map);//{001=chen, 002=dong, 006=kk}
//clear清除所有元素
map.clear();
System.out.println(map);//{}
map.put("杨绛","钱钟书");
map.put("林徽因","徐志摩");
map.put("陈红","陈凯歌");
map.put("袁咏仪","张智霖");
map.put("孙俪","邓超");
//remove删除“孙俪”键的键值对
System.out.println(map.remove("孙丽"));//null
System.out.println(map.remove("孙俪"));//邓超 注意删除键孙俪,返回的是它对应的值
//是否含有某个键
System.out.println(map.containsKey("杨绛"));//true
//是否含有某个值
System.out.println(map.containsValue("钱钟书"));//true
//是否为空
System.out.println(map.isEmpty());//flase
//获取大小
System.out.println(map.size());//4
//根据键获取值
System.out.println(map.get("袁咏仪"));//张智霖
//获取所有键值对的集合
Set<Map.Entry<String,String>> kvs= map.entrySet();
System.out.println(kvs);//[袁咏仪=张智霖, 陈红=陈凯歌, 林徽因=徐志摩, 杨绛=钱钟书]
//获取集合中所有的键的集合
Set<String> keys=map.keySet();
System.out.println(keys);//[袁咏仪, 陈红, 林徽因, 杨绛]
//获取集合中所有的键的集合
Collection<String> values=map.values();
System.out.println(values);//[张智霖, 陈凯歌, 徐志摩, 钱钟书]
}
}
Map集合的遍历
两种方式。
遍历方式1:根据键找值
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
public class TraverseMap {
public static void main(String[] args){
//创建map集合
Map<String, String> map= new HashMap<String, String>();
//给集合中添加元素
map.put("杨绛","钱钟书");
map.put("林徽因","徐志摩");
map.put("陈红","陈凯歌");
map.put("袁咏仪","张智霖");
map.put("孙俪","邓超");
System.out.println("--------------遍历方式1---------------");
//先获取所有键 的集合
Set<String> keys=map.keySet();
//遍历键的集合
for(String key: keys){
//根据每个key获取每个value
String value= map.get(key);//注意这里是map.get(key) map为所在集合,key为集合中的某个键
System.out.println(key+"---"+value);
}
}
遍历方式2:根据键值对找键和值
System.out.println("--------------遍历方式2---------------");
//先获取所有键值对对象的集合
Set<Map.Entry<String, String>> kvs= map.entrySet();
//遍历键值对的集合,获取每个键值对元素
for(Map.Entry<String, String> kv : kvs){
//获取每个键值对的key
String key= kv.getKey();
//获取每个键值对的value
String value= kv.getValue();
System.out.println(key+"----"+value);
}
}