java笔记–Map的用法

java笔记–Map的用法Map接口概述我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。 Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 Collectio…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Map

java笔记--Map的用法

接口概述

我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。

  • Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。

  • Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。

  • Collection中的集合称为单列集合,Map中的集合称为双列集合。

  • 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。

  • Map中常用的集合为HashMap集合、LinkedHashMap集合。

java笔记--Map的用法

Map接口中常用集合概述

通过查看Map接口描述,看到Map有多个子类,这里我们主要讲解常用的HashMap集合、LinkedHashMap集合。

  • HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

  • LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

  • 注意:Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。

Map接口中的常用方法

java笔记--Map的用法没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;

使用put方法时,若指定的键(key)在集合中存在,则返回值为集合中键对应的值(该值为替换前的值),并把指定键所对应的值,替换成指定的新值。

  • get方法:获取指定键(key)所对应的值(value)

  • put方法:将指定的键与值对应起来,并添加到集合中

                         方法返回值为键所对应的值

使用put方法时,若指定的键(key)在集合中

  • remove方法:根据指定的键(key)删除元素,返回被删除元素的值(value)。

Map接口的方法演示

public class MapDemo {
    public static void main(String[] args) {
        //创建Map对象
        Map<String, String> map = new HashMap<String,String>();       //数据采用的哈希表结构
        //给map中添加元素
        map.put("星期一", "Monday");
        map.put("星期日", "Sunday");
        System.out.println(map); // {星期日=Sunday, 星期一=Monday}

        //当给Map中添加元素,会返回key对应的原来的value值,若key没有对应的值,返回null
        System.out.println(map.put("星期一", "Mon")); // Monday
        System.out.println(map); // {星期日=Sunday, 星期一=Mon}

        //根据指定的key获取对应的value
        String en = map.get("星期日");
        System.out.println(en); // Sunday
        
        //根据key删除元素,会返回key对应的value值
        String value = map.remove("星期日");
        System.out.println(value); // Sunday
        System.out.println(map); // {星期一=Mon}
    }
}

Map集合遍历键找值方式

键找值方式:即通过元素中的键,获取键所对应的值

操作步骤与图解:

         1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键

java笔记--Map的用法

         2.遍历键的Set集合,得到每一个键

         3.根据键,获取键所对应的值

                                         java笔记--Map的用法

代码演示: //利用了迭代器Iterator  (点此了解迭代器

public class MapDemo {
    public static void main(String[] args) {
        //创建Map对象
        Map<String, String> map = new HashMap<String,String>();
        //给map中添加元素
        map.put("邓超", "孙俪");
        map.put("李晨", "范冰冰");
map.put("刘德华", "柳岩");
        //获取Map中的所有key
        Set<String> keySet = map.keySet();
        //遍历存放所有key的Set集合
        Iterator<String> it =keySet.iterator();    **
        while(it.hasNext()){                         //利用了Iterator迭代器**
            //得到每一个key
            String key = it.next();
            //通过key获取对应的value
            String value = map.get(key);
            System.out.println(key+"="+value);
        }
    }
}

Map集合遍历键值对方式

键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。

操作步骤与图解:

         1.获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。

         java笔记--Map的用法

         2.遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象

         3.通过键值对(Entry)对象,获取Entry对象中的键与值。

         java笔记--Map的用法

          java笔记--Map的用法

public class MapDemo {
    public static void main(String[] args) {
        //创建Map对象
        Map<String, String> map = new HashMap<String,String>();
        //给map中添加元素
        map.put("邓超", "孙俪");
        map.put("李晨", "范冰冰");
        map.put("刘德华", "柳岩");
        //获取Map中的所有key与value的对应关系
        Set<Map.Entry<String,String>> entrySet = map.entrySet();
        //遍历Set集合
        Iterator<Map.Entry<String,String>> it =entrySet.iterator();
        while(it.hasNext()){
            //得到每一对对应关系
            Map.Entry<String,String> entry = it.next();
            //通过每一对对应关系获取对应的key
            String key = entry.getKey();
            //通过每一对对应关系获取对应的value
            String value = entry.getValue();
            System.out.println(key+"="+value);
        }
    }
}

注意:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。


下面转载自来自一个Map的用法例子:

//假设key 为Integer型 value 为String ,具体自行定义
Map<Integer,String> map = new HashMap<Integer,String>();

 放入数据


map.put(1,"a");
map.put(2,"b");
map.put(3,"c");

根据key获取对应的value

map.get(1); //获取到对应key=1时的value=a

遍历方法1:keyset遍历

Iterator<String> iter = map.keySet().iterator();
 
while (iter.hasNext()) {
 
    int key = iter.next();
 
    String value = map.get(key);
}

————————————————————————————————————————————

//还有一种写法 用for each
for (String key : map.keySet()) {
    String value = map.get(key);
}

遍历方法2:

Iterator<Entry<String, String>> iter = map.entrySet().iterator();
 
Entry<String, String> entry;
 
while (iter.hasNext()) {
 
    entry = iter.next();
 
    int key = entry.getKey();
 
    String value = entry.getValue();
 
}
//同样的for each写法
for (Entry<String, String> entry: map.entrySet()) {
 
    int key = entry.getKey();
 
    String value = entry.getValue();
 
}

 另外,在考虑效率方面,for each速度更快一点点,推荐使用for each写法来遍历。

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158871.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • D3人物关系图谱「建议收藏」

    D3人物关系图谱「建议收藏」本人其他博客有介绍

    2022年6月26日
    98
  • hey,你的CommonJS规范

    hey,你的CommonJS规范

    2021年6月13日
    113
  • python的random()函数用法_Python随机函数random用法示例

    python的random()函数用法_Python随机函数random用法示例这篇文章主要为大家详细介绍了Python随机函数random用法示例,具有一定的参考价值,可以用来参考一下。对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!在python中用于生成随机数的模块是random,在使用前需要import,下面看下它的用法。random.randomrandom.random()用于生成一个0到1的随机符点数:0b,则生成的…

    2022年5月29日
    34
  • 联想服务器R630 收集日志

    联想服务器R630 收集日志

    2021年8月30日
    106
  • 用Protel 99 SE学习原理图的设计及pcb的绘制

    用Protel 99 SE学习原理图的设计及pcb的绘制学习Protel99SE的大致过程:原理图文件(*.Sch)–>网络表文件(*.NET)–>*.PCB 网络表文件:记录封装格式。 (封装是指元件的长宽、大小、位置。封装就是一种标准,用来规定元件制造出的实际大小) Pcb文件:它就是印制电路板的文件 protel软件:https://download.csdn….

    2022年5月30日
    31
  • 解决Typora官方版本图片显示bug

    解决Typora官方版本图片显示bug问题:win10,官网下载的typorawinx64版,就是不显示图片,并不是路径问题!不是偏好设置问题!就是图片无法加载!,网上搜了一下发现很多小伙伴也遇到了这个问题;个人觉得这应该就是0.10版本的bug解决:换了一下0.9版本的,完美解决希望对你有所帮助!0.9版本的安装包pan链接:https://pan.baidu.com/s/1InBp08xV1DcOyiV9Ic65qQ提取码:1234复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V3的分享…

    2022年5月12日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号