HashMap集合遍历的方式

HashMap的底层是数组+链表的形式,jdk1.7之后加入了红黑树,当链表的长度达到8,数组长度大于等于64,实际情况在负载因子loadFactor(0.75)扩容机制和HashCode()方法上使用红黑树概率比较小。它通过异或的方式将当前表的长度-1和传过来的hash异或得到表的位置(tab[i = (n - 1) & hash]),所以链表比较难以达到8,所以它会一直以2倍的大小去扩容表。

遍历HashMap集合的方式可以通过map.keySet拿到key集合,然后遍历取出对应的value,也可以直接通过map.values()取到所有的value,第三也可以用map.entrySet获得entry,然后向下转型。


public class HashMapStudy {
    public static void main(String[] args) {
        Map map = new HashMap();

        map.put("A001","三国演义");
        map.put("B002","西游记");
        map.put("C003","一半是海水一半是火焰");

        // 1、 把key值取出
        Set keySet = map.keySet();
        System.out.println("===========第一种方式遍历========");

        for (Object key : keySet) {
            System.out.println(key + "--"  + map.get(key));
        }


        Iterator iterator = keySet.iterator();
        while (iterator.hasNext()) {
            Object next = iterator.next();
            System.out.println(next + "--" + map.get(next));
        }

        //2、把所有的value取出
        System.out.println("===========第二种方式遍历========");
        Collection values = map.values();
        for (Object value : values) {
            System.out.println(value);
        }

        //3、通过EntrySet 来获取
        Set set = map.entrySet();
        System.out.println("===========第三种方式遍历========");
        for (Object entry : set) {
            //将entry 转成map.Entry
          Map.Entry m = (Map.Entry) entry;
            System.out.println(m.getKey() + "--" + m.getValue());

        }

    }
}

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值