java基本功之Map常规遍历方式

  • 常识
    • Map集合初始化的时候,我们最好指定初始化值大小:HashMap 使用 HashMap(int initialCapacity) 初始化。
    • initialCapacity如果不指定初始值大小,默认是16
    • 存储容量计算方式:initialCapacity = (存储的元素个数 / 负载因子) + 1,负载因子默认是0.75,如果默认为16,那么能存储的个数为11.25个。
    • 加入hashmap存放1024个元素,容量初始大小未设定为16,随着元素不断增加,经过7次扩容,需要重建 hash 表,严重影响性能。

五种方式记录map遍历

敲代码一定得要有仪式感,所以我们先把国家级运动员安排上来,存入静态map中:

private final  static Map map=new HashMap<>(8);
    static {
        map.put("时间管理达人","罗志祥");
        map.put("国家级运动员","罗志祥");
        map.put("多人运动创始人","罗志祥");
        map.put("黑眼圈警告","罗志祥");
        map.put("深度学习","罗志祥");
    }
1.keyset方式获取
@Test
    public void mapTraverseByKetSet() {
        StringBuilder sb = new StringBuilder();
        for (String key : map.keySet()) {
            String value = map.get(key);
            sb.append(key + ":" + value + "\n");
        }
        System.out.println(sb.toString());
    }
结果:
    时间管理达人:罗志祥
	国家级运动员:罗志祥
	多人运动创始人:罗志祥
	黑眼圈警告:罗志祥
	深度学习:罗志祥

2.直接遍历获取value

@Test
    public void mapTraverseByKetValue() {
        StringBuilder sb = new StringBuilder();
        for (String value : map.values()) {
            sb.append(value + "\n");
        }
        System.out.println(sb.toString());
    }

3.entrySet获取键值对

@Test
    public void mapTraverseByEntrySet() {
        StringBuilder sb = new StringBuilder();
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("键值对:" + entry);
            //获取 键值对的 key
            System.out.println("key:" + entry.getKey());
            //获取 键值对的 value
            System.out.println("value:" + entry.getValue());
            sb.append(entry.getKey() + ":" + entry.getValue() + "\n");
        }
        System.out.println(sb.toString());
    }

4.iterator迭代器遍历

@Test
    public void mapTraverseByIterator() {
        StringBuilder sb = new StringBuilder();
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> next = iterator.next();
            sb.append(next.getKey() + ":" + next.getValue() + "\n");
        }
        System.out.println(sb.toString());
    }

5.jdk8特性 forEach

 @Test
    public void mapTraverseByForeach() {
        StringBuilder sb = new StringBuilder();
        map.forEach((key, value) -> {
            sb.append(key + ":" + value + "\n");
        });
        System.out.println(sb.toString());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值