package com.sf._02_hashmap;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Test {
    /**
     * HashMap 常用api
     * HashMap 数据特点是采用键值对  key-value  必须成对出现
     *
     * key 不能够重复    value 可以重复
     * 一般hashMap key 通常情况下用string  value 类型不做限制
     * @param args
     */
    public static void main(String[] args) {
        /**
         * put : 存储一个key-value 键值对
         * putAll :  存储多个key-value
         */
        HashMap<String,Object> map = new HashMap<>();
        map.put("name","zhangsan");
        map.put("age",10);
        map.put("email","123@qq.com");

//        HashMap<String,Object> map1= new HashMap<>();
//        map1.put("name1","zhangsan");
//        map1.put("age1",10);
//        map.putAll(map1);
//        System.out.println(map);
        /**
         * remove(key)
         * 删除name 键值对
         */
        map.remove("name");

        /**
         * map 当中没有特定修改的方法
         * 如果想要修改数据直接调用put方法
         *
         * put 如果key 相同就会把value 的值给进行覆盖
         */
        map.put("age",20);
//        System.out.println(map);
//
//        System.out.println("一共有:"+map.size()+"键值对");
//        System.out.println("map 当中是否为空:"+map.isEmpty());
//        System.out.println("age 的值是"+ map.get("age"));
//        System.out.println("是否包含name 这个key"+ map.containsKey("name"));
//        System.out.println("是否包含zhangsan 这个value"+ map.containsValue("zhangsan"));


        Set<String> set = map.keySet();
//        System.out.println(set);

        Collection<Object> values = map.values();
//        System.out.println(values);

        /**
         * 如果想要遍历map
         * name - zhangsan
         * age - 20
         * email - 123@qq.com
         */
        // 方式一:
        for (String key : set) {
            System.out.println(key+"-"+map.get(key));
        }
        // 方式二:
        // map.entry
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            System.out.println(entry.getKey()+"-"+entry.getValue());
        }
    }
}
