Map接口的特点及使用条件

/*
* Map接口特点:
* 1 每次存储 key-value对;
* 2 key部分不能重复
* 3 常用实现类HashMap和TreeMap
*
* HashMap内存结构?面试题
* 当使用put()方法时,先对HashMap对象生成默认有16,增长因子0.75,的一个类数组形式桶;
*  put中key和value形成节点对象,节点对象中包含Entry<key,value>, 它调用键对象的hashCode()方法来计算hashcode,通过hashcode码在bucket中储存值节点。
* 如果put中节点返回的hashCode存在重复,则HashMap使用链表来解决碰撞问题。
* 注意:
* 如果jdk1.8 put方法发送碰撞后,内部使用红黑树方法解决碰撞,而不是像jdk1.7直接普通链表方式解决碰撞;
* */
public class Demo1 {
    public static void main(String[] args) {
        //HashMap对象
        HashMap<Integer,String> map=new HashMap<>();
        //向容器添加key-value
       String v= map.put(3,"AA");
       //put方法返回如果key重复,返回与key关联旧的值;如果key不重复,返回null
        v= map.put(3,"BB");
        map.put(6,"CC1");
        map.put(16,"CC2");
        map.put(26,"CC3");
        map.put(36,"CC4");
        map.put(null,null);
        map.put(null,"cc5");
        //遍历
        //得到map的key集合
        Set<Integer> keys = map.keySet();
        Collection<String> values = map.values();
        //遍历key集合,通过key得到对应value
        for(Integer k:keys){
            //通过key得到对应value
            String val = map.get(k);
            System.out.println("key:"+k+",value:"+val);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/zhangMY12138/article/details/81351794