今天内容:

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:栈测试

关注微信公众号,随时随地学习

最新文章

  1. Ext 三级联动 及附值
  2. 我的Linux随笔目录
  3. iOS边练边学--iOS中的json数据解析
  4. Java构造器和方法的区别
  5. Bias/variance tradeoff
  6. jquery timepicker
  7. SQLLoader4(数据文件中的列与表中列不一致情况-filler)
  8. a:focus{outline: none;} 如何去掉点击链接时周围的虚线框outline属性
  9. linux远程传输
  10. C#中用ILMerge合并DLL和exe文件成一个exe文件或者DLL
  11. java操作svn工具类SvnUtil
  12. 【BZOJ】4011: [HNOI2015]落忆枫音
  13. mybatis SQL构造器
  14. 使用mysqltools配置读写分离环境
  15. baidu.com直接访问网站,不跳转www.baidu.com
  16. R-模式(mode)和类(class)
  17. PDF去除签名
  18. js和C# 时间日期格式转换
  19. JavaEE之动态页面技术(JSP/EL/JSTL)
  20. TScreen 类 - 通过 Screen 更换光标

热门文章

  1. JavaScript 面向对象的编程(三) 类的继承
  2. Microsoft 根证书计划弃用 SHA-1 哈希算法
  3. VScode输出中文乱码的解决方法------测试过可以用
  4. git远程上传文件
  5. [bzoj 2705][SDOI2012]Longge的问题(数学)
  6. js禁止滚动条滚动,并且滚动条不消失,页面大小不变
  7. effective C++ 读书笔记 条款14 以对象管理资源
  8. 5分钟Serverless实践:构建无服务器的图片分类系统
  9. LeetCode总结--二分查找篇
  10. 一次次迭代 百度语音生成 api 字幕 语音的同步性 关键