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浅析的更多相关文章

  1. java之Map源代码浅析

    Map是键值对.也是经常使用的数据结构. Map接口定义了map的基本行为.包含最核心的get和put操作,此接口的定义的方法见下图: JDK中有不同的的map实现,分别适用于不同的应用场景.如线程安 ...

  2. 错误:java.util.Map is an interface, and JAXB can't handle interfaces.

    问题: 在整合spring+cxf时报错java.util.Map is an interface, and JAXB can't handle interfaces. 解决方法: 将服务端的serv ...

  3. Java中Map常用方法总结以及遍历方式的汇总

    一.整理: 看到array,就要想到角标. 看到link,就要想到first,last. 看到hash,就要想到hashCode,equals. 看到tree,就要想到两个接口.Comparable, ...

  4. Java 基础 Map 练习题

    第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年 ...

  5. java 遍历map 方法 集合 五种的方法

    package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...

  6. JAVA/Android Map与String的转换方法

    在Android开发中 Map与String的转换在,在一些需求中经常用到,使用net.sf.json.JSONObject.fromObject可以方便的将string转为Map.但需要导入jar包 ...

  7. java中map插入相同的key

    测试用例: package test; import org.junit.Test; import po.Person; import java.util.HashMap; import java.u ...

  8. JAVA Socket超时浅析

    JAVA Socket超时浅析 套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字&q ...

  9. JAVA ,Map接口 ,迭代器Iterator

    1.    Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ...

随机推荐

  1. 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver

    场景 当我们设计程序界面的时候,中国人希望界面是中文,而美国人希望界面是英文. 我们当然希望后台代码不需改变,系统能够通过配置文件配置,来自己觉得是显示中文界面还是英文界面. 这是,Spring mv ...

  2. AWS ECU SSH无法连接问题处理

      AWS ECU SSH无法连接问题处理,因同事误操作导致/var/empty/sshd目录权限为771,需要修改为711,因AWS只有一台实例,所以需要通过建立临时实例来挂载“卷”来修改/var/ ...

  3. RESTful Java client with Apache HttpClient / URL /Jersey client

    JSON example with Jersey + Jackson Jersey client examples RESTful Java client with RESTEasy client f ...

  4. 使用xmlHttprequest有感

    原文地址:http://my.oschina.net/LinBandit/blog/33160 之前一片日志说使用xmlhttprequest获取服务数据时,在IE下能通过而在chrome不能通过的问 ...

  5. 企业常用的RPC框架比较

    RPC框架比较     语言 协议 服务治理 社区 机构 Hessian 多语言 hessian(二进制) – 不活跃 Caucho Thrift 多语言 thrift – 活跃 Apache Fin ...

  6. Microsoft Enterprise Library

    http://entlib.codeplex.com/ 微软企业库 现在已经到到6版本了 2013年更新的. https://www.microsoft.com/en-us/download/conf ...

  7. Maven 添加jdk编译插件

    问题描述: 默认情况下,eclipse的maven项目使用jdk1.5编译,而我们的jdk为1.8每次更改jdk1.5之后,只要maven项目已更新,eclipse就会自动的回到jdk1.8结局方法: ...

  8. SparkStreaming 的编程模型

    依赖管理 基本套路 Dstream输入源 ---input DStream Dstream输入源--- Receiver 内置的input Dstream : Basic Source 内置的inpu ...

  9. windows 下,查看并杀死进程

    今天启动我的play framework 服务 提示 could not bind on 9000.还是个error.这让我很不解,昨天还好好的. 怀疑是9000呗某个服务占了,在linux下还挺好办 ...

  10. 技术思维VS管理思维

    以下为技术思维与管理思维的不同 在日常的工作中,会出现身兼两职 开发和项目经理 的情况,在此就要学会游刃有余的切换角色,方能一人分身二角 角色转换本质上是思维转换.思维决定一个人的行为,项目经理不像项 ...