Map.Entry 内部接口|学习笔记

开发者学堂课程【Java 高级编程Map.Entry 内部接口】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/20/detail/419



Map.Entry 内部接口


Map.Entry接口

虽然已经清楚了整个的 Map 集合的基本操作形式,但是依然需要有一个核心的问题要解决,Map 集合里面是如何进行数据储的?对于 List 而言(LinkedList 子类)依靠的是链表的形式实现的数据存储,

那么在进行数据存储的时候一定要将数据保存在一个 Node 节点之中,虽然在 HashMap 里面也可以见到 Node 类型定义,通过源代码定义可以发现,HashMap 类中的 Node 内部类本身实现了 Map.Entry 接口。

static class Node<K, V> implements Map.Entry<K, V>{}

所以可以得出结论:所有的key和 value的数据都被封装在Map.Entry接口之中,而此接口定义如下:

public static interface Map.EntryK.V

并且在这个内部接口里面提供有两个重要的操作方法:

·获取 key: public K getKey();

·获取指定 value:

Map.Entry  内部接口|学习笔记

在 JDK 1.9 以前的开发版本之中,使用者基本上都不会去考虑创建 Map.Entry 的对象,实际上在正常的开发过程之中使用者也不需要关心 Map.Entry 对象创建,可是从 JDK1.9 之后,Map 接口里面追加有一个新的方法:

创建 Map.Entry 对象: public static K,V> Map.Entry K,V>entry(K k, V y);


范例:创建Map.Entry对象

package cn.mldn.demo;

import java.util.Map;

public class JavaAPIDemo {

public static void main(String[ ] args) throws Exception {

Map.Entry<String,Integer> entry = Map.entry( "one", 1) ;

System.out.print1n("获取Key: " + entry.getKey());

System.out.println("获取Value: " + entry.getValue());

System.out.println(entry.getClass( ).getName());//观察使用的子类

}

}

通过分析可以发现在整个的 Map 集合里面,Map.Entrv 的主要作用就是作为一个Key 和 Value 的包装类型使用,而大部分情况下在进行数据存储的时候都会将 key和 value 包装为一个 Map.Entry 对象进行使用。

 

上一篇:MapReduce 基础模型|学习笔记


下一篇:LinkedHashMap 子类|学习笔记