Java中Map集合中的Entry对象用法
Entry: 键值对 对象。

在Map类设计是,提供了一个嵌套接口(static修饰的接口):Entry。Entry将键值对的对应关系封装成了对象,即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。
Entry为什么是静态的?
Entry是Map接口中提供的一个静态内部嵌套接口,修饰为静态可以通过类名调用。
Map集合遍历键值对的方式:
Set<Map.Entry<K,V>> entrySet();
//返回此映射中包含的映射关系的Set视图
该方法返回值是Set集合,里面装的是Entry接口类型,即将映射关系装入Set集合。
实现步骤:
1,调用Map集合中的entrySet()方法,将集合中的映射关系对象存储到Set集合中
2,迭代Set集合
3,获取Set集合的元素,是映射关系的对象
4,通过映射关系对象的方法,getKey()和getValue(),获取键值对
补充知识:【JAVA】Map集合(映射集合)、键值对的概念&集合对象的取和放
Map集合
Map集合的作用就是为了快速查找,他里面的集合我们就可以理解为哈希表,且哈希表存东西最好使用键和值。这里要注意的是,Map集合和Collection集合是并列的关系,不存在继承关系。
注:哈希表就是稀疏数组,因为他虽然是数组,但并不是每个索引都用上了,即位置没有存满,浪费了许多空间。
键值对
Map存储时一般都需要两个东西,我们把哈希表里的每个东西叫做Entry对象,另外表外有一个Entry接口。这个接口里定义了两个方法——key(键)和value(值)。
为什么是分为键和值两部分呢?
因为,我们拿键的哈希码来计算我们所要存储的索引,查找也一样通过键来查找。键也是对象,每个对象都有一个HasCode。且HasCode主要是用来计算数组的索引的。而且用键值对查找,其查找速度非常快。
但是,这里要注意的是,有的时候,我们拿值去保存哈希码的话,可能不是太好。我们希望去找特定的数据类型,专门拿某种类型来计算哈希码。
将对象放进集合
集合先将键和值封装成Entry,然后根据键算出哈希码的索引,然后将计算好的Entry对象放到计算出来的那个索引的位置上。
Map m = new HashMap();
m.put("abc", new Student(2000, "孙悟空", 'm'));
m.put("bcd", new Student(2001, "牛魔王",'m'));
m.put("cde", new Student(1999, "紫霞仙子", 'f'));
将集合中的对象取出
通过键所封装的对象的索引位置,来取出Entry对象。但是,最终返回的是值,而不是Entry对象。
Map m = new HashMap();
m.put("abc", new Student(2000, "孙悟空", 'm'));
m.put("bcd", new Student(2001, "牛魔王",'m'));
m.put("cde", new Student(1999, "紫霞仙子", 'f'));
System.out.println(m.get("abc"));
哈希码
这里的哈希码是从Object继承下来的,但是不见子类就合适,因为Object继承下来的哈希码是用地址算的,所以值特别大。如果要往哈希表里面放,那么浪费空间就比较大,所以子类一般会重写。
通过键取Entry对象
返回Entry对象的方法只有一个entrySet方法,而entrySet返回的一定是Set。即它将Entry封装成了Set集合,我们这里返回的是Entry接口的集合。
System.out.println(m.get("abc"));
Set s = m.entrySet();
//迭代Set
Iterator iter = s.iterator();
//判断
while (iter.hasNext()) {
Map.Entry entry=(Map.Entry)iter.next();
System.out.println(entry.getKey()+":"+entry.getValue());
}
遍历所有的值
//这里不能用Set,因为Set是个无序集,
//且不能重复,但是,哈希表里的值可以重复。
//所以,应该用Collection来引用,不敢用Set。
//values返回的是Collection,
//且不能返回Set,因为这样会将值给去掉,
//且值有可能是重复的。
//键也不能重复,键也返回的是Set。
Collection c=m.values();
Iterator it=c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
拿到所有的键
/**
* 拿到所有的键
*/
Set ss=m.keySet();
Iterator iter1=ss.iterator();
while(iter1.hasNext()){
System.out.println(iter1.next());
}
以上这篇Java中Map集合中的Entry对象用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
代码知识SEO上一篇 : 给你的MyBatis-Plus装上批量插入的翅膀(推荐)
下一篇 : Spring Gateway自定义请求参数封装的实现示例
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!