Map

接口概述

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

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

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

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

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

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

Map接口中常用集合概述

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

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

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

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

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没有对应的值,返回nullSystem.out.println(map.put("星期一", "Mon")); // MondaySystem.out.println(map); // {星期日=Sunday, 星期一=Mon}//根据指定的key获取对应的valueString en = map.get("星期日");System.out.println(en); // Sunday//根据key删除元素,会返回key对应的value值String value = map.remove("星期日");System.out.println(value); // SundaySystem.out.println(map); // {星期一=Mon}}
}

Map集合遍历键找值方式

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

操作步骤与图解:

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

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

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

代码演示: //利用了迭代器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中的所有keySet<String> keySet = map.keySet();//遍历存放所有key的Set集合Iterator<String> it =keySet.iterator();    **while(it.hasNext()){                         //利用了Iterator迭代器**//得到每一个keyString key = it.next();//通过key获取对应的valueString value = map.get(key);System.out.println(key+"="+value);}}
}

Map集合遍历键值对方式

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

操作步骤与图解:

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

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

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

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();//通过每一对对应关系获取对应的keyString key = entry.getKey();//通过每一对对应关系获取对应的valueString 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写法来遍历。

java笔记--Map的用法相关推荐

  1. java containskey_Java Map containsKey()用法及代码示例

    java.util.Map.containsKey()方法用于检查特定键是否已映射到Map中.它使用key元素作为参数,如果该元素在映射中映射,则返回True. 用法: boolean contain ...

  2. java中Map的用法(HaspMap用法)

    public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1 import java.util.HashMap; 2 ...

  3. Java工作笔记-Map的基本用法

    这段话是博客园一大神的,摘录下来: (01) Map 是"键值对"映射的抽象接口. (02) AbstractMap 实现了Map中的绝大部分函数接口.它减少了"Map的 ...

  4. java map contains_Java Map containsValue()用法及代码示例

    java.util.Map.containsValue()方法用于检查特定值是通过Map中的单个还是多个键进行映射的.它使用该值作为参数,如果该值由映射中的任何键映射,则返回True. 用法: boo ...

  5. java的entryset_Java Map entrySet()用法及代码示例

    Java中的java.util.Map.entrySet()方法用于根据Map中包含的相同元素创建集合.它本质上返回Map的集合视图,或者我们可以创建一个新集合并将Map元素存储到其中. 用法: ma ...

  6. Java中entryset用法,keySet()、entrySet()和Map.Entry用法

    2019-11-16 package com.lixing.jihe13; import java.util.*; /** * @author: ZH * @date: 2019/10/25 10:4 ...

  7. java map.get_Java Map get()用法及代码示例

    Java中的Map接口的get()方法用于检索或获取由参数中提到的特定键映射的值.当映射不包含键的此类映射时,它将返回NULL. 用法: thisMap.get(Object key_element) ...

  8. Java中Map用法详解

    原文地址http://blog.csdn.net/guomutian911/article/details/45771621 原文地址http://blog.csdn.net/sunny2437885 ...

  9. list和map用法java,java 集合list和map的用法

    import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Li ...

最新文章

  1. 支持向量机svm的完整实现并配有解析
  2. 前端学习(603):计算机基础
  3. 【训练过程】1) Create Training File(创建训练文件)
  4. Practical Go: Real world advice for writing maintainable Go programs
  5. Swift学习笔记八
  6. 谷歌返华或联手腾讯;华为否认5G专利收费;滴滴外挂让车费翻倍 | 极客头条...
  7. python列重命名_Python目录–创建,重命名,删除,列出,更改
  8. uniapp延迟执行_uni-app android 调试运行首页一直卡在加载中
  9. oracle odbc 数据源管理器 配置,ODBC管理器设置SQL server 数据源
  10. SpringBoot + iframe 前后端实现简单实用的下载文件、导出excel案例
  11. 如何从12306网站下载自己喜欢的手机铃声
  12. 微信分身服务器验证失败咋办,微信好友验证发送失败原因分析及解决方法汇总...
  13. vs2010中svn使用教程_VS2010中使用ankhSVN | 学步园
  14. CT图像重建中的伪影
  15. 修改css样式后刷新网页无改变
  16. Educode--头歌 《软件工程》实验作业2
  17. 淘宝店适合什么样引流方法?淘宝店应该如何引流?
  18. 2.3软件测试与软件开发的关系
  19. 给微信好友自动发消息
  20. chrome开发者工具_如何使用Chrome开发者工具查找性能瓶颈

热门文章

  1. js返回上一个页面而不刷新页面
  2. MyBatis查询数据返回null
  3. MT6739 preloaer流程分析
  4. 乔巴机器人合体_BANDAI 万代 海贼王 乔巴合体机器人之乔巴吊车
  5. Android多媒体MediaStore运用
  6. Girls In AI:面向编程零基础女孩子的AI算法工程师养成计划
  7. iOS 黑白屏滤镜视图层级穿透原理
  8. SQL入门之第九讲——DELETE删除语句
  9. PostgreSQL DELETE 语句
  10. GraspNet 通用物品抓取数据集