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. jquery.cookie.js $.cookie()是怎么使用

    jquery.cookie() 方法的使用(读取.写入.删除) <script type="text/javascript" src="js/jquery.cook ...

  2. Web安全测试指南--会话管理

    会话复杂度: 5.3.2.会话预测: 5.3.3.会话定置: 5.3.4.CSRF: 5.3.5.会话注销: 5.3.6.会话超时:

  3. tf.matmul函数和tf.multiply函数

    tf.matmul(a,b,transpose_a=False,transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=Fal ...

  4. hive-hbase-handler方式导入hive表数据到hbase表中

    Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive-hbase-handler.jar工具类 : hive-hbase-handler.jar在 ...

  5. CSS3 圆角属性 border-radius和-webkit-border-radius使用

    CSS3 圆角属性 border-radius 在 CSS3 中新增了一个 border-radius 边框半径属性,即大家常用的圆角效果.这使得制作圆角将不再麻烦,只需对所用对象加一个 border ...

  6. 字符串,hash

    字符串1.有序的字符的集合,不可变2.s.swapcase() 大变小,小变大3.s.capitalize() 第一个大写4.s.casefold() 返回将字符串中所有大写字符转换为小写后生成的字符 ...

  7. ElasticSearch Document API

    删除索引库 可以看到id为1的索引库不见了 这里要修改下配置文件 slave1,slave2也做同样的操作,在这里就不多赘述了. 这个时候记得要重启elasticseach才能生效,怎么重启这里就不多 ...

  8. C# 程序A发送Log记录给程序B,程序B处理和分析Log记录

    C# 程序A发送Log记录给程序B,程序B处理和分析Log记录 关键字:C# ;Log记录 ;在线Log记录;Socket:httplistener 一.常用场景 1. APP开发,在真机或者虚拟机上 ...

  9. oracle报ora-12519错误

    具体信息如下: ora-12519 tns:no appropriate service handler found the connection descriptor used by the cli ...

  10. 隐藏bat脚本运行时弹出的黑窗口,以隐藏进程在后台执行.

    1.把这段代码写在前面@echo offif "%1"=="r" goto startif "%1"=="h" goto ...