前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java: 浅撩HaseSet和LinkedList

Java: 浅撩HaseSet和LinkedList

作者头像
宋先生
发布2019-07-18 11:22:09
3850
发布2019-07-18 11:22:09
举报

顶哥说Java是世界的,但项目不是。

今天内容:

  • HashSet集合存非重复元素
  • 使用LinkedList模拟栈和队列

HashSet集合元素唯一原理:


我们知道HashSet是添加不了相同的元素的,其原理是hashSet在添加元素时,底层实现会调用到元素的HashCode方法进行比较。

图1:HashSet底层调用元素的hashCode方法

我们在写JavaBean时一般会重写hashCode和equals方法;可能说自动生成更合适一些

图2:JavaBean生成的hashCode方法

由图可以看到,生成的hashCode方法返回了以Javabean属性为参数的Objects的hash方法。而Objects的hash方法又返回了Arrays的hashCode方法。

图3:Objects的hash方法

图4:Arrays的hashCode 方法

可以看到,这里返回的result与JavaBean的每一个属性都有关(JavaBean的每一个属性都又调用了自身的HashCode方法。因此我们在写Javabean时千万不要忘记生成HashCode方法。

LinkedList模拟队列和栈:


我们之所以可以使用LinkedList来模拟队列和栈是因为LinkedList采用的是链表的结构,通过其已有方法就可以很好的实现队列”先进先出”和栈的”先进后出的”特点。

图5:队列模拟类

图6:测试队列"先进先出"

图7:栈模拟类

图8:测试栈"先进后出"

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 顶哥说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档