当前位置:   article > 正文

java 集合框架-HashSet_hashset类的思维导图

hashset类的思维导图
  1. /*
  2. 利用HashSet来存储自定义元素
  3. HashSet集合保证元素唯一性的依据:
  4. 是通过两个方法,hashCode和equals来完成。
  5. 如果元素的HashCode值相同,才会判断equals是否为true。
  6. 如果元素的HashCode值不同,不会调用equals。
  7. 这两个方法都是HashSet调用的,并没有显式调用。
  8. 注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
  9. */
  10. import java.util.*;
  11. class Person
  12. {
  13. private String name;
  14. private int age;
  15. Person(String name,int age)
  16. {
  17. this.name=name;
  18. this.age=age;
  19. }
  20. public String getName()
  21. {
  22. return name;
  23. }
  24. public int getAge()
  25. {
  26. return age;
  27. }
  28. public int hashCode()
  29. {
  30. return name.hashCode()+age*37;
  31. }
  32. public boolean equals(Object obj)
  33. {
  34. if(!(obj instanceof Person))
  35. return false;
  36. Person p=(Person)obj;
  37. return this.name.equals(p.name)&&this.age==p.age;
  38. }
  39. }
  40. class HashSetDemo1
  41. {
  42. public static void main(String[] args)
  43. {
  44. HashSet hs=new HashSet();
  45. hs.add(new Person("Lily_1",30));
  46. hs.add(new Person("Lily_2",30));
  47. hs.add(new Person("Lily_3",30));
  48. hs.add(new Person("Lily_3",30));
  49. hs.add(new Person("Lily_4",30));
  50. hs.add(new Person("Lily_4",30));
  51. hs.add(new Person("Lily_5",30));
  52. hs.remove(new Person("Lily_5",30));
  53. Iterator it=hs.iterator();
  54. while(it.hasNext())
  55. {
  56. Person p=(Person)it.next();
  57. sop(p.getName()+"..."+p.getAge());
  58. }
  59. System.out.println("Hello World!");
  60. }
  61. public static void sop(Object obj)
  62. {
  63. System.out.println(obj);
  64. }
  65. }


Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。

HashSet是基于哈希表的。
哈希表的特点:
哈希表中存的是对象的哈希地址值,当添加新的对象地址时,
首先判断哈希表中有没有该地址值,
若有,则判断是否为同一对象,不是的话则存储,是的话则不存了。
若没有,则存储。

这个特点决定了HashSet集合是无序的,不可重复的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/216945
推荐阅读
相关标签
  

闽ICP备14008679号