当前位置:   article > 正文

【java笔记】Set接口 (HashSet集合,LinkedSet集合)

linkedset

Set:不包含重复元素的collection,没有带索引的方法,不能使用for循环变量

实现类:

HashSet

哈希表结构(查询速度快),是一个无序的集合

  1. Set<Integer>set=new HashSet<>();
  2. set.add(1);
  3. set.add(3);
  4. set.add(2);

使用迭代器遍历

  1. Iterator<Integer>it=set.iterator();
  2. while(it.hasNext()){
  3. Integer n=it.next();
  4. sout(n);
  5. }

使用增强for变量

  1. for(Integer i:set){
  2. sout(i);
  3. }

哈希值:是一个十进制的整数,由系统随机给出(是对象的逻辑地址,不是实际储存的物理地址)

Object.hashcode():返回对象的哈希码

String类的哈希值,重写了hashcode方法,如果值相同,那么哈希值相同

哈希表结构:

 Set集合不能允许重复元素的原理:

 HashSet储存自定义类型的元素

给HashSet存放自定义类型元素时,需要重写对象的hashCode和equals方法,才能保证HashSet集合中的对象唯一

  1. public class Stu {
  2. private String name;
  3. private int age;
  4. @Override
  5. public boolean equals(Object o) {
  6. if (this == o) return true;
  7. if (o == null || getClass() != o.getClass()) return false;
  8. Stu stu = (Stu) o;
  9. return age == stu.age && Objects.equals(name, stu.name);
  10. }
  11. @Override
  12. public int hashCode() {
  13. return Objects.hash(name, age);
  14. }
  15. }

LinkedHashSet

java.util.LinkedHashSet集合 extends HashSet集合

LinkedHashSet集合特点:

 底层是一个哈希表(数组+链表/红黑树)+链表:多了一条链表(记录元素的储存顺序),保证元素有序

  1. LinkedHashSet<String>linked =new LinkedHashSet<>();
  2. linked.add("www");
  3. linked.add("abc");
  4. linked.add("abc");
  5. linked.add("itcast");
  6. linked:www,abc,itcast(有序)

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

闽ICP备14008679号