Java常用类库(三) : HashSet和LinkedList特点简析
今天内容:
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:栈测试
关注微信公众号,随时随地学习

Java常用类库(三) : HashSet和LinkedList特点简析的更多相关文章
- JAVA(三)JAVA常用类库/JAVA IO
成鹏致远 | lcw.cnblog.com |2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不 ...
- Java 常用类库与技巧【笔记】
Java 常用类库与技巧[笔记] Java异常体系 Java异常相关知识 Java在其创立的时候就设置了比较有效的处理机制,其异常处理机制主要回答了三个问题:what,where,why what表示 ...
- Google的Java常用类库 Guava资料
java的人应该都知道Apache commons的java常用类库吧,这个Guava和commons一样,封装出一套比jdk本身提供的常用类库强大.既然有了这个这么强大的类库,我们就没必要重复造轮子 ...
- JAVA常用类库简介(转)
Java编程语言中为方便学习者学习,编制了许多类,这些类已经经过测试,都是我们编程的基础.如果不利用这些已存在的类,我们的编程工作将变得异常复杂并且效率低下.所以我们应尽可能多的掌握Java基本类库的 ...
- Java常用类库API之MD5简单使用
常用类库--MD5简单使用 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash v ...
- Java常用类库2
1.java.util.Date类 package LESSON9; import java.util.Date; public class demo1 { public static void ma ...
- 菜鸡的Java笔记 - java 常用类库
CommonClassLibrary 常用类库 定时调度 定时调度指的是每到一个时刻,都会自动的产生某些特定的操作形式 con ...
- 谈谈Java常用类库中的设计模式 - Part Ⅰ
背景 最近一口气看完了Joshua Bloch大神的Effective Java(下文简称EJ).书中以tips的形式罗列了Java开发中的最佳实践,每个tip都将其意图和要点压缩在了标题里,这种做法 ...
- 吴裕雄--天生自然java开发常用类库学习笔记:LinkedList类
import java.util.LinkedList ; public class LinkedListDemo01{ public static void main(String args[]){ ...
随机推荐
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- [luoguP3690] 【模板】Link Cut Tree
传送门 处理路径 xor 和的时候可以维护子树 xor 和,先提取出路径,再把一个点 splay 到最上方,直接取子树 xor 和即可. 更新一个点权时可以先提取出根到这个点的路径,把这个点 spla ...
- Codeforces Round #240 (Div. 2) C Mashmokh and Numbers
, a2, ..., an such that his boss will score exactly k points. Also Mashmokh can't memorize too huge ...
- 进入DRF和ANGULAR的整合学习,这三篇入门内容一定要学好的
看来,DJANGO的模板功能是无法用啦, 学着用ANGLUAR的SERVICE,MODULE,CONTROLLER啦... http://engineroom.trackmaven.com/blog/ ...
- 17、Java并发性和多线程-避免死锁
以下内容转自http://ifeve.com/deadlock-prevention/: 在有些情况下死锁是可以避免的.本文将展示三种用于避免死锁的技术: 加锁顺序 当多个线程需要相同的一些锁,但是按 ...
- 例说linux内核与应用数据通信系列
[版权声明:尊重原创.转载请保留出处:blog.csdn.net/shallnet.文章仅供学习交流,请勿用于商业用途] 本系列通过源代码演示样例解说linux内核态与用户态数据通信的各种方式: 例说 ...
- 【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation
R-CNN总结 不总结就没有积累 R-CNN的全称是 Regions with CNN features.它的主要基础是经典的AlexNet,使用AlexNet来提取每个region特征,而不再是传统 ...
- 《转》OpenStack对象存储——Swift
OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之中的一个.被称为对象存储.提供了强大的扩展性.冗余和持久性.本文将从架构.原理和实践等几方面讲 ...
- UITextView获取光标位置
UITextRange *range = textView.selectedTextRange; //光标位置 CGRect rect = [textView caretRectForPositio ...
- 【Bzoj2260】【Bzoj4349】商店购物 & 最小树形图
目录 List Bzoj 2260 商店购物 Description Input Output Sample Input Sample Output Bzoj 4349 最小树形图 Descripti ...