java的Map及Map.Entry解析
Map<K,V>是以键-值对存储的(key-value),
而Entry<K,V>是Map中的一个接口,Map.Entry<K,V>接口主要用于获取、比较 key和value.
具体的结构如下:

其中,getKey()用于获取key,而getValue()用于获取value,setValue()用于设置value,comparingByKey()等方法则用于比较.
另外,Map中除了Entry<K,V>接口,put(),get(),remove(),还有entrySet()、values()、keySet()等方法。

values()返回value组成的Collection ,keySet()返回key组成的Set .
entrySet()返回一个Map.Entry<K,V>类型的Set集合
Map.Entry<K,V>接口和entrySet()方法经常用来遍历map。
示例如下:
Map<Integer,String> fruits=new HashMap<Integer,String>();
fruits.put(1,"banana");
fruits.put(2,"apple");
//遍历entrySet()返回的Set,其中每一个元素都是Map.Entry类型的,再通过getKey()、getValue()获取键值对
for (Map.Entry<Integer, String> entry : fruits.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
接下来再看下HashMap类,HashMap类实现了Map<K,V>接口,
HashMap就是用数组和链表来存储数据的,HashMap中默认有一个长度为16的数组,数组的每个元素中存储一个链表的头结点。

在HashMap类中的内部类Node<K,V>实现了Map.Entry<K,V>接口,
这个Node类可以理解成链表的节点,存储着hash值,key,value,和下一个节点。
具体的结构如下:

在HashMap类中,当调用get方法()时,会先通过getNode()方法来获取Node<K,V>,再返回Node<K,V>中的value。

参考博客:https://blog.csdn.net/huyuyang6688/article/details/52388682#t1
java的Map及Map.Entry解析的更多相关文章
- 【java】HashMap、Map、Set、HashMap.put()、HashMap.keySet()、HashMap.entrySet()、Map.Entry内部类
package com.tn.hashMap; public class Student { private String id; private String name; public Studen ...
- 【JAVA集合框架之Map】
一.概述.1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...
- Java 集合系列 15 Map总结
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java 集合系列 08 Map架构
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- Java中常见数据结构Map之LinkedHashMap
前面已经说完了HashMap, 接着来说下LinkedHashMap. 看到Linked就知道它是有序的Map,即插入顺序和取出顺序是一致的, 究竟是怎样做到的呢? 下面就一窥源码吧. 1, Link ...
- Java中如何遍历Map对象的4种方法
在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...
- 【Java学习笔记】Map集合的keySet,entrySet,values的用法例子
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...
- Java集合框架中Map接口的使用
在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
package com.itcast.test20140113; import java.util.ArrayList; import java.util.Arrays; import java.ut ...
随机推荐
- SQLServer2008-镜像数据库实施手册(双机)SQL-Server2014同样适用
SQL Server2008R2-镜像数据库实施手册(双机)SQL Server2014同样适用 一.配置主备机 1. 服务器基本信息 主机名称为:HOST_A,IP地址为:192.168.1.155 ...
- Samba 4 Domain Controller on Ubuntu 14.04 LTS
1. Configure network with a static ip address $sudo nano /etc/network/interfaces auto eth0 iface eth ...
- swiper
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...
- WM_GETMINMAXINFO消息 中结构体MINMAXINFO
MINMAXINFO* lpMMI lpMMI->ptMaxSize.x = 800; // 设置窗口最大化时的宽度 lpMMI->ptMaxSize.y = 600; // 设置窗口 ...
- mac系统下Ruby环境安装
在我们编写代码过程中,会用到一系列的第三方开源类库,我们可以选择手动去一个个添加需要的库,但这非常麻烦.因此我们可以使用CocoaPods来帮助我们自动添加.使用CocoaPods需要先安装Ruby环 ...
- 艺术品照片融合到背景墙上效果及DEMO
演示地址: 功能:图片按照角度增加阴影,比较复杂的功能就是当墙面是不规则的时候,贴的艺术品必须按照墙面的角度进行变形处理.
- lnmp下启动mysql报错 The server quit without updating PID file
启动时候错误代码:Starting MySQL[FAIL.] The server quit without updating PID file (/var/run/mysqld/mysqld.pid ...
- Hsqldb安装与使用
HSQLDB是一个轻量级的纯Java开发的开放源代码的关系数据库系统,其体积小,占用空间小,使用简单,支持内存运行方式等特点.可以在http://sourceforge.net/projects/hs ...
- ipython notebook设置工作路径和自动保存.py文件 ipython_notebook_config.py
在安装完Anaconda,选择了配置环境变量后,打开cmd命令行 1. 打开命令行, 键入 ipython profile create 2. 键入 , 根据这个地址, 打开profile所在的文件夹 ...
- 由python为入口回顾C++的lambda
lambda是一种匿名函数,python lambda可以使简单的函数简洁的表达,,C++的lambda使类似嵌套函数的功能得以实现 python的lambda lambda [arg1[,arg2 ...