java-map接口学习

java-map接口学习

      • Java Map接口
      • HashMap
      • LinkedHashMap
      • TreeMap
      • 例子

Java Map接口

  • Map接口是基于键(key)和值(value)对的集合。每个键值对被称为一个条目(entry)。Map中的键是唯一的。

  • 如果需要根据键进行搜索、更新或删Java Map接口除元素,那么Map是很有用的。

  • 在Java中,有两个接口用于实现Map:Map和SortedMap,以及三个类:HashMap、LinkedHashMap和TreeMap。Java Map的层次结构如下所示:
    在这里插入图片描述

  • Map不允许重复的键,但可以有重复的值。HashMap和LinkedHashMap允许使用null键和null值,但TreeMap不允许使用null键或null值。

  • Map不能直接遍历,因此需要使用keySet()或entrySet()方法将其转换为Set。

  • HashMap HashMap是Map的实现,但它不维护任何顺序。

  • LinkedHashMap LinkedHashMap是Map的实现,它继承自HashMap类,并且按照插入顺序维护元素顺序。

  • TreeMap TreeMap是Map和SortedMap的实现,它按照升序维护元素顺序。

HashMap

import org.junit.Test;
import java.util.*;public class TestMap {@Testpublic void test_hashmap() {Map map1 = new HashMap();// 非泛型Map<Integer, String> map = new HashMap<Integer, String>();//泛型//向map中添加元素map.put(1, "Amit");map.put(5, "Rahul");map.put(2, "Jai");map.put(6, "Amit");//遍历MapSet set = map.entrySet();//转换为Set以便遍历Iterator itr = set.iterator();while (itr.hasNext()) {//转换为Map.Entry以便分别获取键和值Map.Entry entry = (Map.Entry) itr.next();System.out.println(entry.getKey() + " " + entry.getValue());}//元素可以以任何顺序遍历 注意 必须是泛型 指定key value 的类型for(Map.Entry m:map.entrySet()){System.out.println(m.getKey()+" "+m.getValue());}}@Test //比较public void compared(){Map<Integer,String> map=new HashMap<Integer,String>();map.put(100,"Amit");map.put(101,"Vijay");map.put(102,"Rahul");//按照 键 比较//返回包含此Map中的映射的Set视图map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByKey())//对流中的每个元素执行操作.forEach(System.out::println);//按照 键 比较 逆序map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByKey(Comparator.reverseOrder()))//对流中的每个元素执行操作.forEach(System.out::println);//按照 值 比较//返回包含此Map中的映射的Set视图map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByValue())//对流中的每个元素执行操作.forEach(System.out::println);//按照 值 降序比较map.entrySet()//返回以此集合为源的顺序流.stream()//根据提供的比较器进行排序.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))//对流中的每个元素执行操作.forEach(System.out::println);}  
}

LinkedHashMap

@Test //public void LHmap(){LinkedHashMap<Integer,String> hm=new LinkedHashMap<Integer,String>();hm.put(1,"yawei");hm.put(2,"honglou");hm.put(3,"amei");for(Map.Entry m:hm.entrySet()){System.out.println(m.getKey()+" "+m.getValue());}//获取键 列表System.out.println(hm.keySet());//获取值 列表System.out.println(hm.values());//获取键值对System.out.println(hm.entrySet());//remove函数hm.remove(1);System.out.println(hm);}

TreeMap

  • TreeMap类是基于红黑树实现的。它提供了一种在排序顺序中高效存储键值对的方式。
@Testpublic void Treemap(){TreeMap<Integer, String> map = new TreeMap<Integer, String>();map.put(100, "Amneda");map.put(102, "yankou");map.put(101, "shifu");map.put(103, "hhh");for (Map.Entry<Integer, String> entry : map.entrySet()) {System.out.println(entry.getKey() + " " + entry.getValue());}//remove 函数map.remove(103);System.out.println(map);//降序System.out.println(map.descendingMap());// 返回键小于或等于指定键的键值对System.out.println(map.headMap(102));// 返回键大于或等于指定键的键值对System.out.println("tailMap: " + map.tailMap(102, true));// 返回存在于指定键之间的键值对System.out.println("subMap: " + map.subMap(100, false, 102, true));}

例子

@Testpublic void ex_map(){HashMap<Integer, Integer> map = new HashMap<>();map.put(1,1);map.put(2,2);map.compute(1,(key,value)->value+1);System.out.println(map);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/787372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCB三大走线,如何高效率检查?

在PCB设计中&#xff0c;走线的布局与检查是至关重要的环节。按照走线类型&#xff0c;可分为直角走线、差分走线及蛇形线&#xff0c;如何针对这三种走线方式进行高效率检查&#xff0c;去也报电路的稳定性和可靠性&#xff1f; 1、直角走线 容性负载&#xff1a;观察直角拐角…

从SQL质量管理体系来看SQL审核(4)- 如何设计一个优秀的SQL审核引擎

如何设计一个优秀的SQL审核引擎 从SQL质量管理体系来看SQL审核系列包括多篇文章&#xff0c;从SQL质量管理体系的角度来讨论如何设计一个优秀SQL审核引擎&#xff0c;欢迎订阅。 从SQL质量管理体系来看SQL审核&#xff08;1&#xff09;- SQL质量管理体系概览 从SQL质量管理…

YOLOv9改进策略 :主干优化 | 无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023 RIFormer

💡💡💡本文改进内容: token mixer被验证能够大幅度提升性能,但典型的token mixer为自注意力机制,推理耗时长,计算代价大,而RIFormers是无需TokenMixer也能达成SOTA性能的极简ViT架构 ,在保证性能的同时足够轻量化。 💡💡💡RIFormerBlock引入到YOLOv9,多个数…

JavaEE 初阶篇-深入了解单例模式(经典单例模式:饿汉模式、懒汉模式)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 单例模式的概述 2.0 单例模式 - 饿汉式单例 2.1 关于饿汉式单例的线程安全问题 3.0 单例模式 - 懒汉式单例 3.1 关于懒汉式单例的线程安全问题 3.1.1 加锁 synchr…

spring boot3登录开发-3(2短信验证登录/注册逻辑实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 上文衔接 内容简介 功能分析 短信验证登录实现 1.创建交互对象 用户短信登录/注册DTO 创建用户登录VO…

IOTX:未来市场爆发点的RWA协议?DePIN赛道被低估的龙头

从基本面来看&#xff0c;IoTeX的目标是创建一个连接的世界&#xff0c;在这个世界中&#xff0c;每个人都能控制自己的数据、设备和身份。通过区块链技术&#xff0c;IoTeX旨在解锁智能设备和数据的潜力&#xff0c;支持新一代的现实世界Dapp和数字资产的发展。IOTX始终致力于…

红黑树剖析

目录 一. 红黑树的概念 二. 红黑树的性质 三. 红黑树节点的定义 四. 红黑树的插入操作 4.1 uncle存在且颜色为红 4.2 uncle不存在或者uncle存在且为黑 五. 整体代码展示 一. 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每…

OpenCV 4.9基本绘图

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV使用通用内部函数对代码进行矢量化 下一篇&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; ​目标 在本教程中&#xff0c;您将学习如何&am…

广东小团队惊艳业绩揭秘:链动模式助力面膜销售破千万!

惊爆&#xff01;广东一个默默无闻的小团队竟然在短短一个月内&#xff0c;仅凭销售面膜就实现了超过千万的惊人业绩&#xff01;这背后究竟隐藏着怎样的秘密武器呢&#xff1f; 揭开链动模式的神秘面纱 链动模式&#xff0c;作为社交电商领域的一股新兴力量&#xff0c;正以其…

【强化学习的数学原理-赵世钰】课程笔记(一)基本概念

目录 一. 内容概述1. 通过案例介绍强化学习中的基本概念2. 在马尔可夫决策过程&#xff08;MDP&#xff09;的框架下将概念正式描述出来 二. 通过案例介绍强化学习中的基本概念1. 网格世界&#xff08;A grid world example&#xff09;2. 状态&#xff08;State&#xff09;3.…

Spring AOP + 自定义注解 实现公共字段的填充

Spring AOP 自定义注解 实现公共字段的填充 代码冗,不利于后期维护. 定义操作这些字段的方法类型 实现步骤&#xff1a; 自定义注解AutoFill,用于表示操作这些公共字段的方法自定义切面类AutoFillAspect,统一拦截&#xff0c;通过反射获取方法入参&#xff0c;并填充公共字段…

【THM】Burp Suite:Other Modules(其他模块)-初级渗透测试

介绍 除了广泛认可的Repeater和Intruder房间之外,Burp Suite 还包含几个鲜为人知的模块。这些将成为这个房间探索的重点。 重点将放在解码器、比较器、排序器和组织器工具上。它们促进了编码文本的操作,支持数据集的比较,允许分析捕获的令牌内的随机性,并帮助您存储和注释…

9、鸿蒙学习-开发及引用静态共享包(API 9)

HAR&#xff08;Harmony Archive&#xff09;是静态共享包&#xff0c;可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP&#xff0c;不能独立安装运行在设备上&#xff0c;只能作为应用模块的依赖项被引用。…

MongoDB 6.1 及以上版本使用配置文件的方式启动报错 Unrecognized option: storage.journal.enabled

如果你使用的 MongoDB 的版本大于等于 6.1&#xff0c;并且在 MongoDB 的配置文件中编写了如下内容 storage:journal:# 启用或禁用持久性日志以确保数据文件保持有效和可恢复# true 启用&#xff1b;false 不启用# 64 位系统默认启用&#xff0c;启用后 MongoDB 可以在宕机后根…

Linux多进程通信(1)——无名管道及有名管道使用例程

管道是半双工通信&#xff0c;如果需要 双向通信&#xff0c;则需要建立两个管道&#xff0c; 无名管道&#xff1a;只能父子进程间通信&#xff0c;且是非永久性管道通信结构&#xff0c;当它访问的进程全部终止时&#xff0c;管道也随之被撤销 有名管道&#xff1a;进程间不需…

RK3568驱动指南|第十四篇 单总线-第162章DS18B20驱动读时序编写

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

Golang 开发实战day06 - Boolean Conditional

Golang 教程06 - Boolean & Conditional 1. Boolean & Conditional 1.1 什么是布尔类型&#xff1f; 想象一下&#xff0c;你正在玩一个古老的游戏&#xff0c;只有两个选项&#xff1a;是或否。在 Golang 中&#xff0c;这就是布尔类型&#xff0c;用 bool 关键字表…

【Linux实验室】DNS域名解析服务——超详细实验操作!

DNS域名解析 DNS域名解析服务——超详细实验操作&#xff01;&#xff01;&#xff01;序言DNS 基本概述分布式、层次数据库DNS 层次结构DNS 查询步骤DNS 查询类型DNS服务器类型DNS 缓存反向 DNS 查询如何检查 DNS 记录是否生效 Bind解析服务Bind简介bind的服务类型 DNS域名解析…

深入解析实时数仓Doris:Rollup上卷表与查询

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 一、基本概念二、Aggregate 和 Unique 模型中的 ROLLUP三、Duplicate 模型中的 ROLLUP四、ROLLUP 调整前缀索引五、ROLLUP使…

【深耕 Python】Data Science with Python 数据科学(7)书352页练习题

写在前面 关于数据科学环境的建立&#xff0c;可以参考我的博客&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;1&#xff09;环境搭建 往期数据科学博文&#xff1a; 【深耕 Python】Data Science with Python 数据科学&#xff08;2&#xf…