一、概述:

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

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

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

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

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

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

示例图:

二、Map接口中常用集合概述

常用的HashMap集合、LinkedHashMap集合

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

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

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

三、Map接口常用的方法

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

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

使用put方法时,若指定的键(key)在集合中没有,则没有这个键对应的值,返回null,并把指定的键值添加到集合中;

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

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

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

实例:

public static void method1(){//创建键值集合对象Map<String,String> hm=new HashMap<String,String>();//添加元素hm.put("黄晓明","baby");hm.put("邓超","孙俪");hm.put("李晨","范冰冰");hm.put("徐峥","陶虹");//打印覆盖前的值System.out.println(hm.put("徐峥","黄渤"));//删除元素//hm.remove("徐峥");//键相同,则覆盖先前的值//hm.put("徐峥", "黄渤");System.out.println(hm.get("徐峥"));}

 四、Map集合遍历键找值方式

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

操作步骤与图解:

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

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

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

 图解:

代码演示:

public static void method2(){//遍历键找值Map<String,String> hm=new HashMap<String,String>();//添加元素hm.put("黄晓明","baby");hm.put("邓超","孙俪");hm.put("李晨","范冰冰");hm.put("徐峥","陶虹");//遍历map//思路:1、先获取存有所有键的set集合//      2、遍历set集合获取到每一个键//      3.根据键调用get方法获取到每一个值//    1、先获取存有所有键的set集合Set<String> set=hm.keySet();// 2、遍历set集合Iterator<String> it=set.iterator();while(it.hasNext()){//     3.根据键调用get方法获取到每一个值String key=it.next();String st=hm.get(key);System.out.println(key+".."+st);}}

 五、Entry键值对对象

在Map类设计时,提供了一个嵌套接口:Entry。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

  Entry是Map接口中提供的一个静态内部嵌套接口

Entry的方法:

1.getKey()方法:获取Entry对象中的键

2.getValue()方法:获取Entry对象中的值

entrySet()方法:用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回

六、 Map集合遍历键值对方式

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

操作步骤与图解:

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

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

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

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

图解:

代码演示;

public static void method4(){Map<String,String> map=new HashMap<String,String>();map.put("吕布", "西凉军");map.put("赵云", "蜀军");map.put("陆逊", "吴军");map.put("诸葛亮", "蜀军");//遍历map//思路:1.获得存有结婚证的set集合//       2.遍历结婚证集合得到每一个结婚证//        3.得到每一个结婚证以后获取这个结婚证中的男方名和女方名Set<Map.Entry<String, String>> set=map.entrySet();     //增强for循环遍历//遍历结婚证
//        for(Map.Entry<String, String> entry:set){
//                //得到一个结婚证的男方名
//            String key=entry.getKey();
//                //得到一个结婚证的女方名
//            String value=entry.getValue();
//            System.out.println(key+".."+value);
//        }      //迭代器遍历Iterator<Map.Entry<String, String>> it=set.iterator();while(it.hasNext()){Map.Entry<String,String> me=it.next();String key = me.getKey();String value = me.getValue();System.out.println(key+".."+value);}}

转载于:https://www.cnblogs.com/0328dongbin/p/9122983.html

Java学习(Map接口)相关推荐

  1. java的Map接口

    java的Set接口 文章目录 java的Map接口 Map的创建 Map的常用方法 Map的遍历 Map的练习 java的Map接口 Map接口存储的是一组键值对象,提供的是key到value的映射 ...

  2. Java集合——Map接口学习总结

    一.HashMap实现类 1.常用方法 增加:put(K key, V value)删除:clear() remove(Object key)修改:查看:entrySet() get(Object k ...

  3. Java的Map接口,以及Collection和Collections的区别

    一.JAVA集合类(Collection接口.Map接口) java.util.Collection 是一个集合接口.它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java ...

  4. Java API —— Map接口

    1.Map接口概述 · 将键映射到值的对象 · 一个映射不能包含重复的键 · 每个键最多只能映射到一个值 2.Map接口和Collection接口的不同 ·  Map是双列的:Collection是单 ...

  5. Java中Map接口及实现

    Map接口及实现:   1. Map接口   Map是从键到值的映射,键不允许重复,每个键最多能映射一个值. public interface Map<K,V> {     // Quer ...

  6. 零基础Java学习之接口

    介绍 接口的介绍我们从三个方面来说: 从使用上来说是继承的一种扩展,因为java不支持多继承,而有了接口就能够实现多继承的效果. 有时候需要必须从几个类中抽取出一些共同的行为特征,而它们之间又没有继承 ...

  7. Java学习之接口概念

    Java语言只支持单重继承,不支持多继承,即一个类只能有一个父类.但是在实际应用中,又经常需要使用多继承来解决问题.为了解决该问题,Java语言提供接口来实现类的多继承问题. 接口(英文interfa ...

  8. Java学习笔记---接口

    接口和内部类为我们提供了一种接口与实现分离的更加结构化的方法: 首先需要学习抽象类,它是普通的类与接口之间的一种中庸之道:因为不可能总是使用纯接口,所以抽象类仍旧有着重要的作用. 抽象类和抽象方法 接 ...

  9. 初学java之Map接口

    Map<k,v>java.util包中的键值映射的根接口,键值映射,他是一个接口,它不能包含重复的键,一个键只能对应一个值,该接口可以通过HashMap<k,v>来实现 转载于 ...

  10. (JAVA学习笔记) 接口

    定义: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 接口就是规范,定 ...

最新文章

  1. 5793. 【NOIP2008模拟】小S练跑步
  2. 5G VoNR — Overview
  3. 三十六、 SQL基本语法
  4. C语言位于30到100之间的一个奇数,《帮你度过C语言新手阶段》系列之三
  5. 【BZOJ2300】【SCOI2011】糖果
  6. 学生_课程_成绩_教师50个常用sql
  7. Centos npm 安装JDK及配置环境变量
  8. idea 工作区右边框提示_建立自己的制造商工作区的提示
  9. [Python] 拉格朗日插值
  10. express4.x中文文档
  11. python dlib opencv人脸识别准确度_Dlib+OpenCV深度学习人脸识别
  12. 工程施工工地进度监控带天气经纬度相机(监理日志不再难写)
  13. 12306刷票工具(简单易学)
  14. 牛散村 : 强行平仓的后果是什么?
  15. 如何设置计算机的休眠时间,电脑的睡眠时间如何设置?
  16. C语言实现可伸缩的栈结构
  17. 电脑计算机软件硬盘不足,电脑提示磁盘空间不足怎么办
  18. Agv、Rgv 车辆控制调度系统开发第一篇
  19. 【图像分类损失】Encouraging Loss:一个反直觉的分类损失
  20. 微服务学习——微服务框架

热门文章

  1. group by 将null放到其他_为什么我不建议你用去 “ ! = null quot; 做判空?
  2. 从字节码角度解释i++和++i
  3. 拷贝构造函数 c语言中文网,C++对象的复制
  4. HTML输入学生成绩并排序java_JS实现冒泡排序,插入排序和快速排序并排序输出...
  5. mysql myisam存储引擎不能添加外键,添加后显示成功,实则失败
  6. 数组指针和指针数组,函数指针和指针函数,常量指针和指针常量,常量引用
  7. android 百度移动搜索 url 参数,百度移动搜索开放适配服务的3种方法
  8. linux ubuntu fadora,两大主流Linux版本Ubuntu 18.04和Fedora 28的对比
  9. Http协议中的方法
  10. 让开发自动化: 利用 Ivy 管理依赖项