黑马程序员_日记57_Map如何取出所有键值

本文介绍了两种从Map中获取所有键值对的方法。第一种是通过调用`keySet()`方法将Map转换为Set并使用迭代器取出键,然后用`get`方法获取对应的值。第二种方法是利用`entrySet()`方法直接获取映射关系的Set视图,同样通过迭代取出键值对。Map.Entry是Map接口的内部接口,用于表示键值对的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ——- android培训java培训、期待与您交流! ———-

如何取出所有键值呢?

一、查阅API:

Set keySet()
返回此映射中所包含的键的 Set 视图。

1.1 思路:

1 将所有的键存入Set
2 Set集构造迭代器
3 迭代取出所有的键,并用get方法获取对于的值

1.2 原理:Map映射转换成Set集合,利用Set的迭代器。

这就是取出所有键值的方式一。

二、查阅API

2.1 Map方法

Set<Map.Entry<K,V>> entrySet()
返回此映射所包含的映射关系的 Set 视图。

2.2 接口 Map<K,V>

嵌套类摘要
static interface Map.Entry<K,V>
映射项(键-值对)。

2.3 接口 Map.Entry<K,V>

正在封闭接口:
Map<K,V>

映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。
获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。
这些 Map.Entry 对象仅 在迭代期间有效。

2.4 Map.Entry<K,V>方法摘要

boolean equals(Object o)
比较指定对象与此项的相等性。
K getKey()
返回与此项对应的键。
V getValue()
返回与此项对应的值。
int hashCode()
返回此映射项的哈希码值。
V setValue(V value)
用指定的值替换与此项对应的值(可选操作)。

2.5 Map.Entry原理

Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口。

interface Map
{
    public static interface Entry
    {
        public abstract Object getKey();
        public abstract Object getValue();

    }
}

class HashMap implements Map
{
    class Hahs implements Map.Entry
    {
        public  Object getKey(){}
        public  Object getValue(){}
    }

}

思路和原理都与方式一一样!
1 Map把所有的键值映射关系存入Set<Map.Entry<String,String>>
2 在Set中调用迭代器
3 取出键值映射关系
4 取出键和值

三 源代码

import java.util.*;
public class MapDemo2
{
    public static void main(String[] args)
    {
        sop("方式一取出所有键值");
        getWay_1();
        sop("方式二取出所有键值");
        getWay_2();
    }

    //方式一取出所有键值
    public static void getWay_1()
    {
        //创建map子类对象hashmap
        Map<String,String> map = new HashMap<String,String>();

        //添加键值对
        map.put("id001","Jack");
        map.put("id004","Tom");
        map.put("id002","Jane");
        map.put("id003","Jimmy");

        //打印原映射
        sop("原映射"+map);

        //1 把所有的键存入Set
        Set<String> keySet = map.keySet();

        //打印keySet
        sop("键集合:"+keySet);

        //2 调用迭代器
        for(Iterator<String> it = keySet.iterator(); it.hasNext(); )
        {
            //3 迭代取出键并获取键对应值
            String key = it.next();
            String value = map.get(key);
            sop("键:"+key+"对应值为:"+value);
        }
    }

    //方式二取出键值
    public static void getWay_2()
    {
        //创建Map子类对象
        Map<String,String> map = new HashMap<String,String>();

        //添加键值对
        map.put("id001","Jack");
        map.put("id004","Tom");
        map.put("id002","Jane");
        map.put("id003","Jimmy");

        //打印原映射
        sop("原映射"+map);

        //1 Map把所有的键值映射关系存入Set
        Set<Map.Entry<String,String>> entry = map.entrySet();

        //2 获取迭代器
        for(Iterator<Map.Entry<String,String>> it = entry.iterator(); it.hasNext(); )
        {
            //3 取出键值映射关系
            Map.Entry<String,String> me = it.next();

            //4 取出键和值
            String key = me.getKey();
            String value = me.getValue();

            //5 打印
            sop("key="+key+",对应value="+value);
        }

    }


    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}

方式一取出所有键值:
这里写图片描述
方式二取出所有键值:
这里写图片描述

第二种方式总结:

Set<Map.Entry<k,v>> entrySet
将map集合中的映射关系存入到了set集合中,
而这个关系的数据类型就是:Map.Entry
Entry其实就是Map中的一个static内部接口。
为什么要定义在内部呢?
因为只有有了Map集合,有了键值对,才会有键值的映射关系。
关系属于Map集合中的一个内部事物。
而且该事物在直接访问Map集合中的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值