package com.newedu.jb.day19.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
*Map是一个接口,是集合
*
* 存储的是键值对,一个键对应一个一个值。
* 特点:
* 1:键不允许重复。
* 2:键允许为null值。
* 3:存取无序。
*
* 成员方法:
* Vput(K key,V value):向map中添加键值对
* 如果键之前不存在(containsKey(key)),直接添加,并且返回null
* 如果键存在(containsKey(key) =true), 更新 键 对应的值,并且返回 键之前对应的值。。
* Vremove(Object key):从map中移除键值对;
* 移除之前,先将key 与map中所有的已经存在的key做比较,key相同,认为键值对存在,直接移除键值对。
* 返回值:
* key找不到,返回null
* key找到,就返回key对应的value值
*void clear():清除所有的键值对。
*boolean containsKey(Object key):判断是否包含某一个指定的键值。返回boolean值
*boolean containsValue(Object value):判断是否包含某一个指定的值。返回boolean值
*boolean isEmpty():判断map是否为空
*int size():返回map中键值对的个数。
* Vget(Object key):根据指定的键,返回对应的值
*Set<K> keySet():返回map中所有的key的set集合
*Collection<V> values():返回map所有的值的collection集合
*Set<Map.Entry<K,V>> entrySet():返回map中所有的键值对对应的set集合 ***重点
*
* Entry 表示一个接口,表示映射项。 key-value
* 成员方法:
* K getKey() :返回与此项对应的键。
* V getValue():返回与此项对应的值。
* V setValue(V value) :用指定的值替换与此项对应的值(可选操作)。
*@author jerry
*
*/
public class MapDemo1 {
publicstatic void main(String[] args) {
//第一步:创建集合对象
Map<String,Integer> map = newHashMap<>();
//第三步:向集合中添加元素
Integeri1 = map.put("jerry", 20);
Integeri2 = map.put("susan", 19);
Integeri3 = map.put("peter", 18);
Integeri4 = map.put("jerry", 18);//重复的键
Integeri5 = map.put(null, 18);
Integeri6 = map.put("william", null);
System.out.println("向map 中添加 jerry-20的返回值:"+i1);
System.out.println("向map 中添加 susan-19的返回值:"+i2);
System.out.println("向map 中添加 peter-18的返回值:"+i3);
System.out.println("向map 中添加 jerry-18的返回值:"+i4);
System.out.println("向map 中添加 null-18的返回值:"+i5);
System.out.println("向map 中添加 william-null的返回值:"+i6);
System.out.println("================移除===========");
Integerrem1 = map.remove("susan");
System.out.println("从map中移除 susan 的返回值:"+rem1);
Integerrem2 = map.remove("anna");//因为不存在anna,所以返回null值
System.out.println("从map中移除 anna 的返回值:"+rem2);
// map.clear();
System.out.println("map是否为空?"+map.isEmpty());
System.out.println("map的大小?"+map.size());
System.out.println("map中是否包含 jerry呢?"+map.containsKey("jerry"));
System.out.println("map中是否包含 10 这个value呢?"+map.containsValue(10));
System.out.println("================遍历map集合===========");
//第四步:遍历map
//Set<K> keySet() 返回此映射中包含的键的 Set 视图。
//V get(Object key) 返回指定键所映射的值;
Set<String>set = map.keySet();//返回所有键的集合
Iterator<String>iter = set.iterator();
while(iter.hasNext()){
Stringkey = iter.next();
//再根据key 获取对应的值
Integer value = map.get(key);
System.out.println("map中的键值对:key="+key +" value="+value);
}
System.out.println("========遍历map中的所有值=========");
//获取所有的值的collection集合
Collection<Integer>col = map.values();
for(Integeri : col){
System.out.println("map中值为:"+i);
}
System.out.println("==========Map.Entry<>来遍历map=======");
Set<Map.Entry<String, Integer>>entries = map.entrySet();
// entries 是一个 set集合
for(Map.Entry<String, Integer> entry:entries){
//通过entry 来获取每一个 key 和value
String key = entry.getKey();
Integer i = entry.getValue();
System.out.println("通过Map.Entry来遍历map,其中key="+key+" - value="+i);
}
}
}