package cn.itcast.api.a.map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class mapDemo {
public static void main(String[] args) {
/*存储中英文星期集合
* 使用map集合
*
* **/
// 先定义泛型
Map<String , String > map = new HashMap<String , String>();
System.out.println("---------------添加元素--------------");
// System.out.println(map.put("星期一", "Mon"));
System.out.println(map.put("星期一", "Monday"));//键相同值覆盖输出Monday put方法会返回旧值
map.put("星期二", "Tuesday");
map.put("星期三", "Wednesday");
map.put("星期四", "Thursday");
map.put("星期五", "Friday");
map.put("星期六", "Saturday");
map.put("星期日", "Sunday");
System.out.println(map);
System.out.println("---------------通过给定的键获取值--------------");
String value = map.get("星期八");//如果键不存在返回null。通过此判断键是否存在
String value1 = map.get("星期一");
System.out.println("value = "+value);
System.out.println("value1 = "+value1);
System.out.println("---------------根据键删除元素--------------");
String s = map.remove("星期一");//获取对应键的值并且将该键值对从map集合中删除
System.out.println("s = "+ s);
System.out.println(map);
System.out.println("---------------获取所有的键:keySet方法获取使用迭代器--------------");
// 既然是所有的键,那么返回值应该是 一个集合而且是一个单列集合
// 因为map集合必须保证键的唯一性所以我们选用set集合
// 从API中我们发现了一个keySet()方法
Set<String> keySet = map.keySet();
for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
String key= it.next();
String value3 = map.get(key);//通过键获取对应的值
System.out.println(key+"----"+value3);
}
System.out.println("----获取所有的键:使用forreach循环进行遍历-----");
for(String key : keySet){
System.out.println(key+"-----"+map.get(key));
}
System.out.println("---------------获取所有的键:entrySet方法获取键--------------");
/*将map集合中的映射关系存储到set集合中
* 映射关系:其实就是指建和值的对应关系
* 映射关系的类型 Map.Entry
*
* ***/
Set<Map.Entry<String , String>> entrySet = map.entrySet();
// diedaiqi
Iterator<Entry<String, String>> it = entrySet.iterator();
//遍历set中的映射关系对象
while(it.hasNext()){
Map.Entry<String, String> me = it.next();//取到了映射关系对象
// 获取键
String key = me.getKey();
// 获取值
String value4 = me.getValue();
System.out.println(key+"--------"+value4);
}
/**总结 : map集合中没有迭代器,取出元素的方式: 将map集合转成单列集合在使用单列集和的迭代器
* map集合也不能直接被foreach循环遍历
*
* *
* */
System.out.println("---------------获取所有的键:values()方法获取所有值--------------");
// 因为值不需要保证唯一性(所以不能通过值获取键) 所以返回值是collection
// 姓名---归属地 对应关系获取所有的归属地 values();
// 获取所有的英文星期
Collection<String> values = map.values();
for (String value5 : values) {
System.out.println("value5:"+value5);
}
}
}