Java: 浅撩HaseSet和LinkedList
顶哥说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:测试栈"先进后出"
赞 (0)