Map接口的特点及使用条件

本文详细介绍了Map接口的特点,重点探讨了HashMap的内存结构及其实现原理,包括如何通过hashCode处理冲突,并对比了不同JDK版本中冲突解决机制的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
* 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);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值