Java常用类库(三) : HashSet和LinkedList特点简析
2024-08-27 19:23:15
今天内容:
l 浅撩HashSet集合元素不可重复的原理
l 使用LinkedList模拟栈和队列
1.浅撩HashSet集合元素不可重复的原理
我们知道HashSet是添加不了相同的元素的,其原理是hashSet在添加元素时,底层实现会调用到元素的HashCode方法进行。
图1:调用hashcode方法
我们在写Javabean时一般会重写hashCode和equals方法;可能说自动生成更合适一些。
图2:Javabean生成的hashCode方法
由图可以看到,生成的hashCode方法返回了以Javabean属性为参数的Objects的hash方法。
图3:Objects的hash方法
而Objects的hash方法又返回了Arrays的hashCode方法。
图4:Arrays的hashCode 方法
可以看到,这里返回的result与JavaBean的每一个属性都有关(JavaBean的每一个属性都又调用了本身的HashCode方法.因此我们在写Javabean时千万不要忘记生成HashCode方法!
2.LinkedList可以当做底层来模拟队列和栈
我们之所以可以使用LinkedList来模拟队列和栈是因为LinkedList采用的是链表的结构,通过其已有方法就很好的实现队列”先进先出”和栈的”先进后出的”特点。
图5:队列模拟类
图6:队列测试
图7:栈模拟类
图8:栈测试
关注微信公众号,随时随地学习
最新文章
- Ext 三级联动 及附值
- 我的Linux随笔目录
- iOS边练边学--iOS中的json数据解析
- Java构造器和方法的区别
- Bias/variance tradeoff
- jquery timepicker
- SQLLoader4(数据文件中的列与表中列不一致情况-filler)
- a:focus{outline: none;} 如何去掉点击链接时周围的虚线框outline属性
- linux远程传输
- C#中用ILMerge合并DLL和exe文件成一个exe文件或者DLL
- java操作svn工具类SvnUtil
- 【BZOJ】4011: [HNOI2015]落忆枫音
- mybatis SQL构造器
- 使用mysqltools配置读写分离环境
- baidu.com直接访问网站,不跳转www.baidu.com
- R-模式(mode)和类(class)
- PDF去除签名
- js和C# 时间日期格式转换
- JavaEE之动态页面技术(JSP/EL/JSTL)
- TScreen 类 - 通过 Screen 更换光标
热门文章
- JavaScript 面向对象的编程(三) 类的继承
- Microsoft 根证书计划弃用 SHA-1 哈希算法
- VScode输出中文乱码的解决方法------测试过可以用
- git远程上传文件
- [bzoj 2705][SDOI2012]Longge的问题(数学)
- js禁止滚动条滚动,并且滚动条不消失,页面大小不变
- effective C++ 读书笔记 条款14 以对象管理资源
- 5分钟Serverless实践:构建无服务器的图片分类系统
- LeetCode总结--二分查找篇
- 一次次迭代 百度语音生成 api 字幕 语音的同步性 关键