您现在的位置是:首页 > Javascript
当前栏目
HashMap Key & Lmmutable类型使用原理
2023-02-19 12:22:35 时间
思考,为什么我们在HashMap put key 的时候经常使用String 或者Integer?
A:String 、Integer 都是final 修饰的累,都很好的重写了 hashCode 和 equals方法,最关键的他们是Immutable类,为不可变类。可以保证hashCode的稳定性。
不可变类的优点与用途
1. 线程安全,省去了加锁的过程,因为对象内容不可变就不用担心线程同时对对象做修改
2. 拷贝效率高。当类不可变时, 拷贝其对象只需拷贝指针即可,而不用拷贝对象本身,不用担心会被修改
3. 可以作为HashMap的key,类不可变保证了Hashcode的稳定性。
如果让你实现一个自定义的class作为HashMap的key该如何实现?
A:主要关注两点即可
覆写hashCode以及equals方法应该遵循的原则
实现一个Immutable的类,那么如何实现一个不可变类呢。
1)类需要用final修饰
2)成员变量使用 private final 修饰、对外不提供set方法。
3)如果成员函数使用构造函数去接受外部的数据,成员变量,需要使用接受对象的拷贝(copy)
4)Get方法返回外部接受的成员变量,返回成员变量的拷贝(copy)
相关文章
- JDK中内嵌JS引擎介绍及使用
- 49195,npm最后的疯狂?盘点10款最有前途JavaScript构建工具
- 译文:5个增强Node.js应用程序增强功能
- 4个例子,吃透 JavaScript 实现的二叉搜索树 BST
- Vue中使用XML和JSON格式互转插件
- JDK中Jshell简单使用(JDK9版本以上或者JDK9版本)
- shiro中的JSP标签支持
- Java技术点-json转对象,对象转json
- SpringBoot+SpringDataJpa @Query之 JPQL使用书写模板(模糊查询and条件查询)
- Spring Boot中的Freemarker模版引擎引用css和js的正确姿势
- Node.js解压版的环境配置及相关常用命令
- JSP学习笔记(6)—— 自定义MVC框架
- JSP学习笔记(5)——Servlet、监听器、过滤器、MVC模式介绍
- Jsp学习笔记(4)——分页查询
- APIJSON简单使用
- JSP学习笔记(3)——JSTL 标签库
- JSP学习笔记(1)——Jsp指令、动作元素和内置对象
- JavaScript ES6 Promise对象
- Web前端——JavaScript扩展补充
- Web前端——表单提交和Js添加选项