【Java高级特性】java学习之旅23-Map

96.在 Vue 3 中使用 OpenLayers 探究加载 Point、Polygon 的极限 在前端 GIS(地理信息系统)开发中,OpenLayers 作为一个功能强大的 Web 地图库,广泛用于加载地图、渲染矢量数据(点、线、面)、叠加图层等场景。然而,当涉及到。 阅读详情

HashMap

特征:

  1. 数据结构:jdk1.8之前:数组 + 单链表,jdk1.8之后数组 + 单链表 + 红黑二叉树
  2. 初始容量是16,加载因子0.75
  3. 当存放的元素个数达到容量的0.75时,扩容为原来的2倍
  4. 容量上限 1 << 30
  5. 其他的常量:TREEIFY_THRESHOLD = 8:当map的容量达到8时,数据结构从单链表转为红黑二叉树;UNTREEIFY_THRESHOLD = 6:当map的容量小于6时,数据结构由红黑二叉树转为单链表。
  6. 无序的、key唯一、value不唯一、key和value都可以为null
  7. 线程不同步的、多线程使用不安全,如果要实现同步的map:Map map = Collections.synchronizedMap(new HashMap(…));

常用的方法:

put(key , value)(键,值)//将键值对存入map中

get(key)(键)通过键来获取值

remove(key)(键)移除元素通过键

size() 获取元素的个数

clear()清空所有元素

isEmpty() 判断map是否为空

containsKey(key) 判断map中是否包含指定的键

containsValue(value) 判断map中是否有包含的值

keySet() 返回map中key的set集合

values() 返回map中value的collection集合

entrySet() 一个entry里面只能有一个键值对,返回的是一个entry的set集合

创建以及赋值:

@Test
	public void test1() {
		HashMap<Integer, String> map = new HashMap<>();
		
		map.put(3, "h1");
		map.put(1, "h2");
		map.put(2, "h3");
}

遍历HashMap:

  1. foreach(key)
HashMap<Integer, String> map = new HashMap<>();


//通过遍历map中的键数组来获取Key/Value
//map.keySet()是键所对应的数组
for (Integer key : map.keySet()) {
	System.out.println(key + "::" + map.get(key));
}
  1. foreach(Entry<K, V>)
for (Entry<Integer, String> entry : map.entrySet()) {
	System.out.println(entry.getKey() + "::" + entry.getValue());
}
  1. forEach方法
map.forEach((k, v) -> System.out.println(k + "::" + v));

LinkedHashMap

特征:

  1. 底层实现和HashMap类同,数据结构是链表
  2. 有序、key唯一、value不唯一、key和value都可以null
public static void main(String[] args) {
		
		LinkedHashMap<String, String> map = new LinkedHashMap<>();
		
		map.put("wqs", "吴青山");
		map.put("wzy", "王子玉");
		map.put("hwz", "胡维柱");
		
		System.out.println(map);
		
	}

TreeMap

特征

  1. 数据结构是红黑二叉树
  2. 无序的,唯一,key和value都可以为null
  3. 可排序的,存入的元素需要经过排序(元素具有排序的能力、或者容器 具有排序的能力)
  4. 线程不同步的、多线程使用不安全

Hashtable

特征

  1. 底层数据结构 数组+单链表
  2. 默认的容量是11, 加载因子是0.75
  3. 当存储的元素个数达到容量的0.75时,扩容为原容量的2倍+1
  4. 无序的、key唯一的、value可重复、key和value都不能为null
  5. 线程同步的、多线程使用安全、单线程使用效率较低

Properties

特征

  1. 继承于Hashtable
  2. 可以作为配置信息的存储容器,同时加载配置文件的配置信息。
  3. 线程同步的、多线程使用安全

常用方法

setProperty(String key , String value) //设置键值对

get(String key)//通过键获取对应的值

getProperty(String key, String defaultValue)//通过key去取value的值,如果没有则给出一个默认的值

load(InputStream is)通过IO流读取properties配置文件

创建赋值取值

	@Test
	public void test1() {
		Properties pro = new Properties();
		
		pro.setProperty("name", "wzy");
		pro.setProperty("sex", "gg");
		System.out.println(pro);
		
		System.out.println(pro.getProperty("name"));
		System.out.println(pro.getProperty("age", "暂无数据"));
	}

通过IO流读取配置文件

@Test
	public void test2() throws IOException {
		Properties pro = new Properties();
		
		InputStream is = new FileInputStream("./config.properties");
		
		pro.load(is);
		
		System.out.println(pro);
		
	}

这里注意一点:./表示从根目录开始寻找,…/表示上一级目录,这里也可以加上配置文件的全地址,但是不推荐,因为如果将文件复制给别人,别人和你的磁盘不一定一样。

SAP-ABAP:SAP中的用户确认对话框:深入理解与实践POPUP_TO_CONFIRM 本文深入介绍了SAP中的用户确认对话框函数POPUP_TO_CONFIRM,包括其核心参数配置、返回值处理、应用场景和最佳实践。该函数是SAP二次开发中重要的交互工具,用于关键操作前获取用户确认,防止误操作。文章详细解析了参数设置技巧,强调必须全面处理所有可能的返回值,并提供了删除数据、批量操作等典型应用场景的代码示例。同时对比了其他类似弹出函数,帮助开发者选择合适工具。正确使用该函数可提升系统安全性、改善用户体验并符合SAP设计规范。 阅读详情

相关推荐

基于微信小程序的扫码签到系统源码

大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具。代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。签到管理:新增签到,点击查看码展示二维码(有时效性)springboot mybatis 小程序。签到管理:查看用户创建的签到,可删除。用户管理:查看注册用户信息,及删除。签到记录:查看用户签到记录:可删除。个人信息:展示个人信息,可修改。统计分析:查看用户,签到数量。签到记录:查看用户签到记录。登录注册(含授权登录)我的签到:查看签到记录。

wfuhui的博客 5224

Idea运行工程时报错:java: cannot find symbol

拉取的新工程,本地运行工程报错 java: cannot find symbol symbol:method xxxx location: variable misAuthInfo of type com.xxx, 解决方案: 确认了是否是lombok问题,重新下载, 在网上找了些解决方案都无法解决, 最后发现是java JDK版本过高导致的,重新下载了jdk1.8解决问题 附: 朋友发的jdk1.8居然用不了, 运行时提示:无法打开”jdk1.8.0_201.jdk“,因为无法验证

Mr.junjun的博客 3613

AI 辅助代码审查:开启代码质量管控的智能时代

AI辅助代码审查正在改变传统的代码质量管控方式。通过自动化分析、智能反馈和上下文感知,AI不仅提高了代码审查的效率,还提升了代码质量的一致性和可维护性。随着机器学习和深度学习技术的不断发展,未来AI将成为开发者日常工作中强大的助手,进一步推动软件开发向智能化、自动化方向发展。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3228

沈师 Java程序设计 PTA 编程题答案

1. 求最大值 (10 分) 本题目要求读入2个整数A和B,然后输出两个数的最大值。 输入格式: 输入在一行中给出2个绝对值不超过1000的整数A和B。 输出格式: 对每一组输入,在一行中输出最大值。 输入样例: 在这里给出一组输入。例如: 18 -299 输出样例: 在这里给出相应的输出。例如: 18 答案: import java.util.Scanner; public class Main{ public static void main(String[] args){ S

日常记录 2万+

Linux系统搭建OpenClaw(原Clawdbot)全流程指南 最新版

工具定位:开源个人 AI 助手,支持文件读取、命令执行、多渠道交互(Telegram / 本地终端等);系统要求:主流 Linux 发行版(Ubuntu/Debian/CentOS 等),Node.js ≥22(核心依赖);安全提示:OpenClaw 为测试版,具备高权限操作能力,建议使用非主力机,配置权限白名单,避免接触敏感数据。

AI时代老码农的第二春 6559

国产Flash替代方案:手把手教你用XSCT烧写ZYNQ7045的BOOT.BIN(附完整命令解析)

本文详细介绍了国产Flash替代方案在ZYNQ7045上的应用,通过XSCT工具链实现BOOT.BIN的精准烧写。内容涵盖国产Flash兼容性检查、PetaLinux环境搭建、XSCT烧写全流程及故障排查,帮助开发者高效完成国产化替代,提升硬件开发效率。

weixin_33670786的博客 423

如何排查can not find symbol的编译错误

原文连接http://stackoverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean   Cannotfind symbol意味着什么 首先,它是一个编译错误,意味着你的源代码有问题或者编译的方式有问题。 你的源代码有以下部分组成: Ø  关键词:比如 true  fal

dory2100的博客 20万+

大唐杯5G考前冲刺篇(回顾全文重点必看)

大唐杯习题复习指南

nimo观察者 1万+

使用 Lombok 后编译不通过

出现问题: Error:(14, 13) java: cannot find symbol symbol: method setAge(long) location: variable user of type org.jinghui.springboot.demo.pojo.User 编写的代码如下: 解决思路: 在 Intellij 中 Settings > Build...

爱穿格子裤的专栏 6504

05 - matlab m_map地学绘图工具基础函数 - 设置比例尺指北针

本篇介绍下m_map中添加指北针(m_northarrow)、比例尺(m_ruler)和进行比例缩放(m_scale)的函数及其用法 。提供了 示例以便参考,罗列了 各函数可设属性。希望对绘图的你有所帮助。

weixin_43339605的博客 1945

移花接木,玩转CANoe的几种扩展接口应用(五)——串口设备

近期看到粉丝朋友在CANoe自动化测试方面的关注度很大,今天就围绕这个做一个专题,总结一下以往项目上用过的几种CANoe扩展接口,分享出来希望对相关领域的网友有所帮助。本文是该专题的第五篇文章,主要讲解了串口设备的功能配置、连接方法、配置方法、调用方法,最后分析了这种扩展借口应用的特点和适用场景。

Mr.Cssust的博客 2369

java 提示语法错误_java常见语法错误

java常见语法错误语法错误就是不符合语法规则出现的问题,比如说你拿两个字符串进行乘法运算,当然就不对了,就是通常所说的病句。下面为各位整理了java中常见的语法错误,希望对java初学者有所帮助。1.变量可能未初始化错误提示:Abc.java:9: variable i might not have been initializedSystem.out.println(i);中文说明:变量i可能...

weixin_29065791的博客 6472

SpringBoot 教程:SpringBoot多种方式实现静态Html页面跳转

本教程介绍了 Spring Boot 中实现静态 Html 页面跳转的常用方法,包括重定向跳转、直接返回 ModelAndView 对象以及使用 Thymeleaf 模板引擎。如果你的项目中使用了 Thymeleaf 模板引擎,那么可以利用它来实现静态页面的跳转。对于静态的 Html 页面,我们可以使用多种方式来实现跳转功能。重定向是一种常见的页面跳转方式,它通过发送 HTTP 重定向响应头来告知浏览器跳转到指定的页面。在 Spring Boot 中,我们可以将视图名称设置为静态页面的路径。

2301_79325657的博客 2446

Java高级特性学习(超详细)一(集合)_java高级特性 - 集合框架,收藏这篇就够了

缘由:由于数组在创建的时候会默认定义数组的长度,而数组的长度是不变的,所以导致数组的赋值及创建会有内存浪费的现象,于是集合作为可以更改长度的数组,可以解决内存浪费的现象。

Javachichi的博客 838

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Educoder–Java高级特性(第三章)- Java 字符串与集合练习——词频统计【笔记+参考代码】

Educoder–Java高级特性(第三章)- Java 字符串与集合练习——词频统计【笔记+参考代码】 第一关 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下: 用String.split()方法将字符串“aaa|bbb|ccc”以“|”进行拆分,用StringTokenizer类将字符串“This?is?a?test?strin...

fuhanghang的博客 7429

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

集合框架Map

1、集合框架Map介绍 Map集合的特性: 1、无序的; 2、以键值对的方式进行数据存储; 如图所示: 结果: 3、添加元素时,如果键已经在集合中存在,那么后添加的值会覆盖原来的值,并且put方法会将原有的值返回 如图所示: 添加的值会覆盖原来的值 put方法会将原有的值返回 4、它不继承Collection接口 遍历方法: 第一种:分别用Set和Collection去获取键和值 代码如下...

Kobe Bryant 214

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

2025/03/23 ​《Java核心技术·卷I(原书第11版)》Java核心技术·卷II(原书第11版):高级特性》凯·S.霍斯特曼(Cay S. Horstmann)书籍阅读

2025/03/23 ​《Java核心技术·卷I(原书第11版)》Java核心技术·卷II(原书第11版):高级特性》凯·S.霍斯特曼(Cay S. Horstmann)书籍阅读

weixin_45428910的博客 1549

java学习进度

学了那么久的java,一直不得要义,

u010743364的专栏 985

【java】:java学习路线图

原帖地址: http://www.zhihu.com/question/19851109 可以从几方面来看Java: JVM Java JVM:内存结构和相关参数含义 · Issue #24 · pzxwhc/MineKnowContainer · GitHubJava JVM:内存溢出(栈溢出,堆溢出,持久代溢出以及 nable to create native th

阳光心态,健康人生的博客 1067

Python学习笔记:Chaper3高级特性

Python学习笔记第三弹一级目录二级目录三级目录3.1高级特性3.1.1切片3.1.2迭代3.1.3列表生成器3.1.4生成器3.1.5迭代器3.2函数式编程3.2.1高阶函数3.2.1.1map和reduce1.map2.reduce3.2.1.2 filter3.2.1.3 `sorted`函数3.3模块作用域 一级目录 二级目录 三级目录 3.1高级特性 3.1.1切片 List在python语言中很常用,取出list中的元素也是频繁的操作。如何取出list中元素,学习过循环后,自然地想到了使用循环

weixin_45745854的博客 423

Java中高级岗面试为何越来越难,java高级特性面试题

作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!,可以扫码获取!!(备注:Java)**[外链图片转存中…(img-Xmb2EcRz-1713841016979)]作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料。

2301_82243139的博客 989

Java使用Lambda表达式List model转map,key为null ,复杂key值

Java使用Lambda表达式List转map 常用方法汇总 //返回key的实体map Map<String,DemoModel> modelMap = list.stream().collect(Collectors.toMap(DemoModel::getKey, demo -> demo)); //返回key,value 的map Map<String,String> keyValueMap = list.stream().collect(Colle

秦学强 1690

Python学习笔记二(高级特性)

本文主要对Python的函数调用的使用进行讲解。

zhglance的专栏 497

Java高级特性学习(超详细)一(集合)

缘由:由于数组在创建的时候会默认定义数组的长度,而数组的长度是不变的,所以导致数组的赋值及创建会有内存浪费的现象,于是集合作为可以更改长度的数组,可以解决内存浪费的现象。

jojo_oulaoula的博客 579

Java 编程语言单词汇总

Java 编程语言单词汇总step-01 掌握拓展step-02 掌握拓展step-03 掌握拓展step-04 掌握拓展step-05 掌握拓展step-06 掌握拓展step-07 掌握拓展step-08 掌握拓展step-09 掌握拓展step-10 掌握拓展step-11 掌握拓展step-12 掌握拓展step-13 掌握拓展step-14 掌握拓展step-15 掌握拓展step-16...

weixin_45801537的博客 1万+

Java学习路线图图解 + 30个实战小项目

本文提供了一套完整的Java学习路线图和30个实战项目。学习路线分为五个阶段:基础语法、面向对象编程、核心API与集合、高级特性以及框架与项目实战。每个阶段都配有相应的小型实战项目,从简单的计算器到全栈博客系统。建议采取"理论+实践"的学习方法,每学一个知识点就完成对应项目,循序渐进地提升开发能力。通过这套系统化的学习方案,即使是零基础学习者也能在几个月内掌握Java开发技能,为进入企业级开发或AI/大数据领域打下坚实基础。

GAOneS的博客 425
上一篇: 【Java高级特性】java学习之旅22-Set集合
下一篇: 【Java高级特性】java学习之旅24-Collections工具类
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值