请选择 进入手机版 | 继续访问电脑版

城微方案网

 找回密码
 注册VIP
查看: 66|回复: 0

[JAVA] 162_集合_Set_HashSet集合详解

[复制链接]

657

主题

660

帖子

2710

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2710
发表于 2021-3-25 00:05:25 | 显示全部楼层 |阅读模式
  1. package settest;
  2. import java.util.HashSet;
  3. import java.util.Set;
  4. /*
  5. * Set集合:HashSet
  6. * 1.HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构。
  7. * 2.哈希表又叫做散列表,哈希表底层是一个数组,这个数组中每一个元素是一个单向链表,每个单向链表
  8. * 都有一个独一无二的hash值,代表数组的下标。在某个单向链表中的每一个节点上的hash值是相等的。
  9. * hash值实际上是key调用hashCode方法,在通过“hash function”转换成的值。
  10. * 3.如何向哈希表中添加元素:
  11. * 先调用被存储的key的hashCode方法,经过某个算法得出hash值,如果在这个哈希表中不存在这个hash值,
  12. * 则直接加入元素。如果该hash值已经存在,继续调用key之间的equals方法,如果equals方法返回false,
  13. * 则将改元素添加。如果equals方法返回true,则放弃添加该元素。
  14. * 4.HashSet其实是HashMap中的key部分,HashSet有什么特点,HashMap中key应该具有相同的特点。
  15. * 5.HashMap和HashSet初始化容量都是16,默认加载因子是0.75.
  16. * */
  17. public class Test01 {
  18. public static void main(String[] args) {
  19. Set s = new HashSet();
  20. Employee e1 =new Employee("1000", "TOM");
  21. Employee e2 =new Employee("1000", "TOM");
  22. Employee e3 =new Employee("2000", "SMITH");
  23. Employee e4 =new Employee("2001", "COOK");
  24. Employee e5 =new Employee("3000", "KING");
  25. Employee e6 =new Employee("3001", "SUN");
  26. s.add(e1);
  27. s.add(e2);
  28. s.add(e3);
  29. s.add(e4);
  30. s.add(e5);
  31. s.add(e6);
  32. System.out.println(s.size());
  33. }
  34. }
  35. class Employee{
  36. String id;
  37. String name;
  38. public Employee(String id, String name) {
  39. this.id = id;
  40. this.name = name;
  41. }
  42. public boolean equals(Object o){
  43. if(o==this) return true;
  44. if(o instanceof Employee){
  45. Employee e =(Employee)o;
  46. if (e.id.equals(this.id) && e.name.equals(this.name)){
  47. return true;
  48. }
  49. }
  50. return false;
  51. }
  52. //以y员工编号判断哈希值是否重复
  53. public int hashCode(){
  54. return this.id.hashCode();
  55. }
  56. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册VIP

本版积分规则

QQ|Archiver|手机版|小黑屋|城微方案网 |网站地图

GMT+8, 2021-4-12 21:30 , Processed in 0.057164 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表