Java中Map集合中的Entry对象用法

 更新时间:2020年09月25日 09:33:52   作者:宇智波爱编程  
这篇文章主要介绍了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对象用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现HTTPS连接的示例代码

    Java实现HTTPS连接的示例代码

    现在的网络世界,安全性是大家都非常关注的问题,特别是对于咱们这些程序员来说,所以,理解并实现HTTPS连接,对于保护咱们的数据安全是极其重要的,下面我们就来学习一下在Java中如何实现HTTPS连接吧
    2023-12-12
  • SpringBoot + layui 框架实现一周免登陆功能示例详解

    SpringBoot + layui 框架实现一周免登陆功能示例详解

    这篇文章主要介绍了SpringBoot+layui框架实现一周免登陆功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 聊聊Arrays.deepToString()和Arrays.toString()的区别

    聊聊Arrays.deepToString()和Arrays.toString()的区别

    这篇文章主要介绍了聊聊Arrays.deepToString()和Arrays.toString()的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java Spring5学习之JdbcTemplate详解

    Java Spring5学习之JdbcTemplate详解

    这篇文章主要介绍了Java Spring5学习之JdbcTemplate详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Java中的悲观锁与乐观锁是什么

    Java中的悲观锁与乐观锁是什么

    这篇文章主要介绍了Java中的悲观锁与乐观锁是什么,帮助大家更好的理解和学习Java锁的相关知识,感兴趣的朋友可以了解下
    2020-09-09
  • SpringBoot定制JSON响应数据的实现

    SpringBoot定制JSON响应数据的实现

    本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • 使用Java代码获取服务器性能信息及局域网内主机名

    使用Java代码获取服务器性能信息及局域网内主机名

    这篇文章主要介绍了使用Java代码获取服务器性能信息及局域网内主机名的方法,方便对服务器的远程管理和团队协作时用到,而且文中的方法无需调用jni,需要的朋友可以参考下
    2015-11-11
  • java.lang.Runtime.exec的左膀右臂:流输入和流读取详解

    java.lang.Runtime.exec的左膀右臂:流输入和流读取详解

    这篇文章主要介绍了java.lang.Runtime.exec的左膀右臂:流输入和流读取详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Java基于循环递归回溯实现八皇后问题算法示例

    Java基于循环递归回溯实现八皇后问题算法示例

    这篇文章主要介绍了Java基于循环递归回溯实现八皇后问题算法,结合具体实例形式分析了java的遍历、递归、回溯等算法实现八皇后问题的具体步骤与相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • java web实现简易收费站

    java web实现简易收费站

    这篇文章主要为大家详细介绍了java web实现简易收费站,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一
    2020-11-11

最新评论