Java中Map.Entry详解_Java硬件工程师的博客-程序员宝宝_java map.entry

技术标签: Java  程序设计与算法  java  数据结构  

关于HashMap的详细介绍请参考Java基础-HashMap集合

1.Map.Entry简介

Map是java中的接口,Map.Entry是Map的一个内部接口

Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry

Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法

2. 从entrySet()方法解释Map.Entry

set<Map,Entry<K,V>> entrySet() 将Map集合转换成set集合
假设现在有一个Map集合,如下所示
map集合

key value
1 zhangsan
2 lisi
3 wangwu
4 zhaoliu

Set set=map1.entrySet();
set集合对象****中的每个元素都是Entry键值对

1=zhangsan
2=lisi
3=wangwu
4=zhaoliu

注意:Map集合通过entrySet()方法转换成的这个set集合,set集合中元素的类型是Map.Entry<K,V>
Map.Entry和String一样,都是一种类型的名字,只不过Map.entry是静态内部类,是Map中的

我们可以深入HashMap的源码中看到

static class Node<K,V> implements Map.Entry<K,V> {
    
        final int hash;
        final K key;
        V value;
        Node<K,V> next;

Node<K,V>实现了Entry接口,Entry接口中K表示key,即键,V表示value,即值。Entry即Node是Map集合中的一个对象元素,而Map集合正是由一个个Entry即Node对象所构成
正是因为Node实现了Entry接口,所以使用Entry的时候也可以使用其getValue()和getKey()方法
具体结构如图所示:

在这里插入图片描述

2. 使用Map.Entry遍历Map集合

public static void main(String[] args) {
    
    Map<Integer,String> maps=new HashMap<Integer,String>();
    maps.put(3,"张飞");
    maps.put(2,"关羽");
    maps.put(4,"赵云");
    maps.put(1,"刘备");
    maps.put(5,"马超");
    Set<Map.Entry<Integer,String>> sets=maps.entrySet();
    for(Map.Entry<Integer,String> entry:sets){
    
        System.out.println("key="+entry.getKey()+" value="+entry.getValue());
    }
}

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39736597/article/details/113762355

智能推荐

fname matlab,求大神帮我解释一下matlab最后几行是什么意思_蒋寻的博客-程序员宝宝

该楼层疑似违规已被系统折叠隐藏此楼查看此楼clear;if nargin&lt;1;action='initialized';end;[fname,pname]=uigetfile('*.wav','Open Wave File');file=[pname,fname];[x,fs,bits]=wavread(file); % 读入声音文件(*.wav)sound(x,fs,bits...

SSM企业版:多数据源+事务_戰士的博客-程序员宝宝

前言之前博客中《SSM+nginx+tomcat+maven+mysql+redis环境搭建及工程全套配置,实现前后端动静分离》只是初级版的SSM体系建设,在这篇文章之前,可参照:https://blog.csdn.net/qq_36632174/article/details/102461255来了解前博客内容。本篇对上一篇做一个升级,配置多数据源,加入事务、定时任务、流程组件activ...

ArcGIS 9.3下载 ArcGIS 9.2下载(包含ArcGIS Desktop、ArcGIS Engine、ArcGIS Server、ArcSDE、workstation)..._weixin_30564901的博客-程序员宝宝

ArcGIS_Server_Java_Editioned2k://|file|ArcGIS_Server_Java_Edition.rar|1125815962|26CF7DF54987FD597754A67F0ADDF23E|h=SSF6PY4G6S74ZPDH5RPHLVPQ6VDKCZ6H|/ ArcGIS_Server_DotNet_Editioned2k://|file|A...

vlc 运行时配置参数读写的实现分析_王二の黄金时代的博客-程序员宝宝_vlc参数设置

版本 v3.0.16 源码http://get.videolan.org/vlc/3.0.16/vlc-3.0.16.tar.xz每一完整的软件系统都会有一个参数配置模块,用来实现运行时不同的参数输入,有些软件系统会做得比较简单,直接通过方法的输入,作为参数,有些系统做得比较通用复杂,比如vlc,也是比较完整独立的通用的配置。vlc 使用c语言编写,实质是一个多媒体播放器, 有OB面向对象的设计,对一个结构体的创建,可以类比为创建一个对象,vlc都通过使用malloc等函数,动态申请内存来存...

cv2.getRotationMatrix2D()和cv2.warpAffine()_shelleyHLX的博客-程序员宝宝

cv2.getRotationMatrix2D()图像的旋转矩阵一般为: 但是单纯的这个矩阵是在原点处进行变换的,为了能够在任意位置进行旋转变换,opencv采用了另一种方式: 为了构造这个矩阵,opencv提供了一个函数:cv2.getRotatio...

基础算法之排序(1)--冒泡排序_NTSK13的博客-程序员宝宝

/********************************************************************************************************** * Function : test * Create Date : 2014/03/23 * Autho

随便推点

谷歌开发者大会,3000字记录,好看好吃好玩,还有独家面试..._菜鸟学Python的博客-程序员宝宝

谷歌是一个大部分码农心里都是非常有份量的互联网巨头公司,算算我已经是连续2年参加谷歌开发者大会了。第一次参加也是非常的偶然的机会,然后一发不可收拾,赶着高铁请假2天参加的...

完整好用Dynasim.Dymola.v7.0动态系统仿真建模软件,广泛用在汽车,航空,航天等领域_software2017的博客-程序员宝宝

Zoho.ManageEngine.EventLog.Analyzer.v6.0.x64-SHOCK\Zoho.ManageEngine.MSPCenter.Plus.v7.2-SHOCK\soft\67\Agilent.SystemVue.v2009.05.rarCAM-TOOL V4.0.rarCoWare.Signal.Processing.Designer.v2009.

MLOps极致细节:0. 背景介绍_破浪会有时的博客-程序员宝宝

此博客主要介绍什么是MLOps,为什么用MLOps,以及MLOps与DevOps,破布,敏捷等产品开发流程的区别。

(三)MLOps管道中的模型自动调整_寒冰屋的博客-程序员宝宝

目录data_utils.pymodel_assembly.pyemail_notifications.pytask.pyDockerfile下一步下载源 - 1.2 MB在本系列文章中,我们将引导您完成将CI/CD应用于AI任务的过程。您最终会得到一个满足Google MLOps 成熟度模型2级要求的功能管道。我们假设您对Python、Deep Learning、Docker、DevOps和Flask有一定的了解。在上一篇文章中,我们为这个项目搭建了一个云环境。在这一部.

CCF CSP刷题记录11——201512-2消除类游戏(Java)_I have a lemon的博客-程序员宝宝

试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。   现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给

【Java源码解析】如何严谨地重写 equals 方法、getClass 方法与 instanceof 关键词用法比较_Zhou_LC的博客-程序员宝宝

文章目录如何严谨地重写 equals 方法1 equals 方法概述2 String 类中的 equals 方法3 自定义 equals 方法时出现的问题4 instanceof 关键词与 getClass 方法的比较5 正确编写 equals 方法如何严谨地重写 equals 方法1 equals 方法概述equals 方法我们都非常熟悉,equals 是 Object 基类中的模板方法 ,每个类中都有它的的存在,多数类或其抽象父类都以不同方式重写了 equals 方法。例如,作为所有数值封装类的

推荐文章

热门文章

相关标签