HashMap的四种遍历方式

这篇博客介绍了HashMap的四种遍历方式,以学生对象作为键,住址作为值进行示例。通过具体的代码实现,展示了如何在Java中操作HashMap并获取其内容。

这里以学生对象为键,住址为值,添加到map中

package Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;

public class Mtest1 {
    public static void main(String[] args) {
        Student s1 = new Student("黄渤", 35),
                s2 = new Student("杨颖", 24),
                s3 = new Student("迪丽热巴", 18),
                s4 = new Student("孙红雷", 26),
                s5 = new Student("杨洋", 29);
        Map<Student, String> stu = new HashMap<Student, String>();
        stu.put(s1, "北京");
        stu.put(s2, "香港");
        stu.put(s3, "乌鲁木齐");
        stu.put(s4, "台北");
        stu.put(s5, "武汉");
        //第一种,通过键得到值
        Set<Student> keys = stu.keySet();//将所有键放到set类型的集合中
        for (Student key : keys) {//通过键获取值
            String value = stu.get(key);
            System.out.println(key + " 地址:" + value);
        }
        System.out.println();
        //第二种,将map中的元素放到Entry中,然后遍历Entry
        Set<Map.Entry<Student, String>> entries = stu.entrySet();
        for (Map.Entry<Student, String> entry : entries) {
            /*Entry相当于Map接口的一个嵌套类,所以上面Map.Entry<Student, String>的写法可以直接写Entry<Student, String>但是要倒入java.util.Map.Entry包。
            entries相当于一个装了Map(键值对)的Set集合,(Map.Entry<Student,String> entry创建一个entry对象)*/
            System.out.println(entry.getKey() + " 地址:" + entry.getValue());
        }
        System.out.println();

        //第三种,迭代器类似于第二种
        Set<Map.Entry<Student, String>>  entriess=stu.entrySet();
        Iterator<Map.Entry<Student, String>> iter=entriess.iterator();
        while(iter.hasNext()){
            Map.Entry<Student, String> entry=iter.next();
            System.out.println(entry.getKey() + " 地址:" + entry.getValue());
        }
        System.out.println();

        //第四种 Map结合Lambda遍历的API,使用default void forEach(BioConsumer<super K,super V>action)方法
        stu.forEach(new BiConsumer<Student, String>(){
            @Override
            public void accept(Student key, String value) {
                System.out.println(key + " 地址:" + value);
            }
        });
        /*第四种简化后的版本为stu.forEach((new BiConsumer<Student, String>)( key, value)->System.out.println(key+" 地址:"+value));
        注意中间的格式->
        */
    }
}

代码再加个学生类就可以了,运行结果如下!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值