162_集合_Set_HashSet集合详解
来源:互联网 发布:网络支付平台问题案例 编辑:程序博客网 时间:2024/06/04 08:41
package settest;import java.util.HashSet;import java.util.Set;/* * Set集合:HashSet * 1.HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构。 * 2.哈希表又叫做散列表,哈希表底层是一个数组,这个数组中每一个元素是一个单向链表,每个单向链表 * 都有一个独一无二的hash值,代表数组的下标。在某个单向链表中的每一个节点上的hash值是相等的。 * hash值实际上是key调用hashCode方法,在通过“hash function”转换成的值。 * 3.如何向哈希表中添加元素: * 先调用被存储的key的hashCode方法,经过某个算法得出hash值,如果在这个哈希表中不存在这个hash值, * 则直接加入元素。如果该hash值已经存在,继续调用key之间的equals方法,如果equals方法返回false, * 则将改元素添加。如果equals方法返回true,则放弃添加该元素。 * 4.HashSet其实是HashMap中的key部分,HashSet有什么特点,HashMap中key应该具有相同的特点。 * 5.HashMap和HashSet初始化容量都是16,默认加载因子是0.75. * */public class Test01 {public static void main(String[] args) {Set s = new HashSet(); Employee e1 =new Employee("1000", "TOM"); Employee e2 =new Employee("1000", "TOM"); Employee e3 =new Employee("2000", "SMITH"); Employee e4 =new Employee("2001", "COOK"); Employee e5 =new Employee("3000", "KING"); Employee e6 =new Employee("3001", "SUN"); s.add(e1); s.add(e2); s.add(e3); s.add(e4); s.add(e5); s.add(e6); System.out.println(s.size());}} class Employee{String id;String name;public Employee(String id, String name) {this.id = id;this.name = name;}public boolean equals(Object o){if(o==this) return true;if(o instanceof Employee){Employee e =(Employee)o;if (e.id.equals(this.id) && e.name.equals(this.name)){return true;}}return false;}//以y员工编号判断哈希值是否重复public int hashCode(){return this.id.hashCode();}}
0 0
- 162_集合_Set_HashSet集合详解
- 集合三_Set_HashSet和TreeSet
- 07_集合_List集合详解
- 164_集合_SortedSet_集合详解_01
- _集合
- 155_集合_Collection集合的常用方法详解_03_contains
- 165_集合_SortedSet集合详解_02_实现Comparable接口
- 黑马程序员_集合简单入门详解
- 167_集合_Map常用方法详解
- 集合详解
- 集合详解
- 集合详解
- 集合详解
- 集合详解
- 集合 详解
- 黑马程序员_集合_单列集合
- 黑马程序员_集合
- 黑马程序员_集合
- 迁移学习和微调深度卷积神经网络
- bootstrap table系列:
- The last update operation tried to add the file 'xxx.java',but the file already exists universioned
- GB28181平台对接之填坑
- 使用Dagger 2 依赖注入
- 162_集合_Set_HashSet集合详解
- 机器学习算法
- 自定义打印输出
- 1044. Shopping in Mars (25)
- 开放式授权
- ListView常用优化技巧
- for update的意义
- 用JAVA连接Hbase的DBHelp类
- 《探索C++多线程》:condition_variable源码(一)