在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不是线性的存放对象的引用,Map接口提供了一种映射关系,所有的元素都是以键值对(Entry类型对象实例)的方式存储的,所以能够根据key快速查找value,key是映射关系的索引,value是key所指向的对象,注意,这里的value不是一个数值,而是一个对象的引用,Java集合框架的元素均是指对象!

Map中的key值不可重复,value值可以重复,每个key值只能映射到一个value对象;

Map支持泛型,形式如:分别代表Key值的存放的对象类型和value值的对象类型;

使用Map接口,和前面一样,不能直接使用,HashMap是Map接口的重要实现类,基于哈希表实现,既然是基于哈希算法,那么HashMap的Entry对象是无序排列的;

key和value的值都可以为null,因为key值是唯一的,所以只能有一个key值为null

在前面的Collection接口中,使用List存放了课程对象,现在利用一个简单的例子,使用Map存放学生对象,一个学生属性就包括:id,姓名,所选课程

学生类:Student.java

学生类代码很简单,主要是课程类型的属性,使用Set接口进行存放,并且规定了课程类型的泛型

既然需要课程,那么课程类代码需要重复一下:Course.java

接下来需要使用Map接口,进行一系列操作,代码在MapTest.java中

在MapTest类中,对Map接口进行了实现,插入数据,遍历数据,修改数据,删除数组最后利用containsKey方法和containsValue方法进行了元素的查找,最核心的操作也就是这些,main方法中为了便于测试,后面注释了一些语句,实际情况根据需要调用即可

首先,插入学生对象的时候,使用了手动输入插入,系统判断对象ID是否已经存在,如果不存在则对象值为null此时进行插入,添加Map映射对象,使用put方法,获取仍然使用get(key)的形式进行查询

使用keySet方法可以返回Map中所有的键的集合,然后可以根据键取得value,实现Map集合的遍历;

使用entrySet方法可以返回Map中所有entry键值对的集合,同样可以方便的遍历所有元素;

通过remove(key)方法可以删除key键对应的映射

修改的时候通过put方法传入新的value可以实现修改,此处注意,因为student中的属性全部都是公有所以通过student.name = newname;这样直接修改值也是可以的,因为此时查询到的对象正好是students的Map集合中所存在的对象,所以修改的时候,修改的也一定是该对象的值,更好的方法是通过类中自定义的setter方法进行修改,不一定必须用put方法新创建一个对象进行传入,只要知道原理,上述方法更改都是可以的

最后是利用containsKey和containsValue方法进行查询,通过ID查询是很简单的,但是通过学生姓名进行查询,实际上先需要传入value查询,对于value的对象,应该包含id与name,所以只要containsValue方法之比较name而忽略ID即可,containsValue方法对于传入的对象也是使用equals方法进行比较的,前面我们说过equals方法默认比较的是对象引用的内存地址,并不是比较对象的属性值,这个时候我们的方法很明确,就是在Student类中重写equals方法,实现我们想要的功能,代码上面有,就是比较两个对象的name值,只要name值相等,就认为查询到了该对象,然后输出相应的信息即可,在现实应用中,其实也是这样,我们是着重比较某个值是否相同,而不是其他,这样就能实现通过value查询,确切来说是通过重写equals方法实现了通过对象中的任一元素可以进行查询,

以上就是Map接口的简单应用,Map接口和Collection接口是两个不同的集合根接口,提供的不同的对象存放形式,另外还提供了很多操作方法,对开发带来很大的方便,这些知识点也需要我们自己多总结多敲代码,才可以熟练应用

Java集合查找Map,Java集合框架中Map接口的使用相关推荐

  1. MapReduce框架中map、reduce方法的运行机制

    MapReduce框架中map.reduce方法的运行机制 Hadoop的API中提供了Mapper和Reducer抽象类,分别有个抽象map()方法和reduce()方法,使用时只需实现该抽象类和抽 ...

  2. 5.0 java集合框架中的接口collection属于_JAVA集合框架 - osc_cyo2dovg的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.为什么要使用集合 单个数据,可以用变量保存: 多个数据,可以用数组保存: 但是对于存储多个数据且数量不确定的情况,使用集合: 二.集合和数组的区别 (1)数组: 1.只能保存同一种类型的数据: 2 ...

  3. java map 自动排序_Java中Map的排序

    Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可 ...

  4. java map传入参数_JAVA中map中参数的添加修改

    Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部类,描述Map中的按键/数值对. S ...

  5. stream map方法_Java Stream中map和flatMap方法

    最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...

  6. python map什么意思_Python中map是什么意思

    点击上面"蓝字"关注我们! 大约需要2分钟 map函数的原型是map(function, iterable, -),它的返回结果是一个列表. 参数function传的是一个函数名, ...

  7. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  8. 集合框架中的接口及其实现类

    Collection:集合层次中的根接口,JDK没有提供这个接口直接地实现类. Set:不能包含重复的元素.SortedSet是一个按照升序排列元素的Set. List:是一个有序的集合,可以包含重复 ...

  9. java 对象查找_Java如何从数组中查找对象元素?

    在Java中,如何从数组中查找对象元素? 示例 以下示例使用Contains方法来搜索数组中的String对象. package com.yiibai; import java.util.*; pub ...

最新文章

  1. GPS轨迹数据集免费下载资源整理
  2. 线程同步——内核对象实现线程同步——等待函数
  3. mvc ajax教程,MVC3----AJAX辅助方法
  4. numpy np.matmul()(两个数组的矩阵乘积)
  5. JVM命令查看与设置参数
  6. VirtualApp技术黑产利用研究报告
  7. ubuntu 16.04 搭建 python 开发环境
  8. docker-Consul的概述及consul集群环境的搭建
  9. DOM-4 【utils/待讲评】节点创建删除、元素属性设置获取、节点属性
  10. P5290-[十二省联考2019]春节十二响【贪心,堆】
  11. 『算法』读书笔记 1.4算法分析 Part1
  12. 解决部分控件,自动获取焦点的情况
  13. Knowledge Representation笔记
  14. 比arduino更简单易用的开发板ShineBlink,零代码上云,像搭积木一样开发物联网产品
  15. 宝刀——《荒原的呼唤》选载之一
  16. 重臣遭遇中年危机?百度变狼 海龙被辞
  17. 鸿蒙系统安装第三方应用是什么,网友表示:鸿蒙最新系统可以通过连接U盘安装第三方软件了...
  18. gdi win7奔溃_Win7系统细致核心图形架构的操作方法
  19. YTU每周训练----数据结构+数论+图论
  20. Web漏洞之SSRF(服务器端请求伪造)

热门文章

  1. 苹果因不带充电器被罚款200万美元;杨笠代言英特尔被抵制,品牌方连夜下架;Linux考虑加入对Rust的支持 | 极客头条...
  2. 首届“马栏山杯”国际音视频算法优化大赛 马栏山上绽放智能之花
  3. 微信iOS版朋友圈可删除评论;周鸿祎:有的软件会偷拍偷录;银河麒麟操作系统V10发布| 极客头条
  4. AI ProCon 2020第一天:40+大厂专家共话AI技术应用下一个十年!
  5. 迷恋猫爆红,彰显区块链 NFT 巨大魔力!
  6. 2019 嵌入式智能国际大会圆满落幕,7 大专场精彩瞬间释出!
  7. 华为有意向西方公司出售 5G 技术;iOS 13 被爆漏洞;GNOME 3.34 正式发布| 极客头条...
  8. 出于安全考虑,千万不要绕开 CORS!
  9. 如果微软开发了 Android,会有何不同?
  10. Redis 真得那么好用吗?