Map容器大小影响key的索引

单元测试偶然发现的Map一个问题

        Map<String,String> map1 = new HashMap<>();
        map1.put("aaa", "foo");
        map1.put("bbb", "bar");
        map1.put("ccc", "foobar");
        System.out.println(map1); // {aaa=foo, ccc=foobar, bbb=bar}

        Map<String,String> map2 = new HashMap<>(map1);
        assertEquals(map1.values().toArray(new String[]{}), map2.values().toArray(new String[]{}));
        System.out.println(map2); // {aaa=foo, ccc=foobar, bbb=bar}

        Map<String,String> map3 = new HashMap<>(3); //显式指定了大小
        map3.putAll(map1);
        System.out.println(map3); // {bbb=bar, ccc=foobar, aaa=foo}

        assertEquals(map1.values().toArray(new String[]{}), map3.values().toArray(new String[]{})); // 判等失败

可见如果显式指定了map容器大小 会影响key的索引。如下所示

默认大小

图片描述
图片描述
图片描述

keyindex
aaa3
ccc10
bbb14
显式指定了大小3

图片描述
图片描述
图片描述

keyindex
aaa3
ccc2
bbb2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值