Set接口

导读:本篇文章讲解 Set接口,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

基本介绍

Set接口是 Collection 接口的子接口

  • 无序(添加和取出的顺序不一致),没有索引;
  • 不允许重复元素,所以最多包含一个null;

image-20211031124240386

常用方法

boolean add(E e);  // 插入e元素
boolean contains(Object o);  // 判断是否存在 
Object[] toArray();  // 转成数组
boolean remove(Object o);  // 移除指定元素

遍历

List set = new HashSet<>();
set.add(1);
set.add("张三");

// 1. 迭代器
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

System.out.println("================================================");

// 2. 增强for循环
for (Object o : list) {
    System.out.println(o);
}

HashSet基本介绍

  1. HashSet底层是一个HashMap;
  2. 添加一个元素时,会显得到一个hash值=》转换层索引值;
  3. 找打存储数据表table,看这个索引位置是否已经存放元素;
  4. 如果没有,直接加入;
  5. 如果有,调用equals比较,如果相同就放弃添加,如果不相同则添加到最后;
  6. 在Java8中,如果一条链表的元素个数到TREEIFY_THRESHOLD(8),并且table的大小 >= MIN_TREEIFY_CAPACITY(64)数据结构转为红黑树

LinkedHashSet基本介绍

  1. LinkedHashSet是HashSet的一个子类;
  2. LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数据+双向链表
  3. LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的;
  4. LinkedHashSet不允许重复添加元素;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/78410.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!