HashMap的几种遍历方式

主要介绍HashMap的四种循环遍历方式

第一种通过获取所有的Key 来获取value

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class showMap {
    public static void main(String[] args) {
        HashMap<Integer,String> hashMap = new HashMap();
        hashMap.put(1,"zhangsan");
        hashMap.put(2,"lisi");
        hashMap.put(3,"wangwu");
        hashMap.put(4,"zhaoliu");
        hashMap.put(5,"lf");

        //第一种方式获取所有的key ,通过所有的key获value
        Set<Integer> keys = hashMap.keySet();
        //然后使用迭代器
        Iterator<Integer> iterator = keys.iterator();
        while(iterator.hasNext()) {
            Integer key = iterator.next();
            //通过key 来获取value
            String value = hashMap.get(key);
        }
        //使用foreach
        for (Integer key : keys) {
            hashMap.get(key);
        }
    }
}

第二种通过hashMap.entrySet()
在这里插入图片描述当然这里可以看一下Map.Entry的源码

static class Node<K,V> implements Map.Entry<K,V> {
        final int hash;
        final K key;
        V value;
        Node<K,V> next;

其实Entry里面存放是是一个Node类型的节点

package map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @author 李峰
 * @version V1.0
 * @Package map
 * @description  map集合的遍历方式
 * @date 2021-04-16 21:03
 */
public class showMap {
    public static void main(String[] args) {
        HashMap<Integer,String> hashMap = new HashMap();
        hashMap.put(1,"zhangsan");
        hashMap.put(2,"lisi");
        hashMap.put(3,"wangwu");
        hashMap.put(4,"zhaoliu");
        hashMap.put(5,"lf");
        //第二种通过调用hashMap.entrySet() 返回一个set集合
        //集合中存的数Entry类型的对象
        Set<Map.Entry<Integer, String>> entrieSet = hashMap.entrySet();
        //然后使用迭代器遍历set集合
        Iterator<Map.Entry<Integer, String>> iterator1 = entrieSet.iterator();
        while(iterator1.hasNext()) {
            //获取到的是一个个Entry对象
            Map.Entry<Integer, String> next = iterator1.next();
            //然后调用getKey 和 getValue 方法 获取key 和 value
            Integer key = next.getKey();
            String value = next.getValue();
        }
        //使用foreach 遍历
        for (Map.Entry<Integer, String> entrys : entrieSet) {
            Integer key = entrys.getKey();
            String value = entrys.getValue();
        }
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值