Set接口

特点1:无序,存储的元素与添加顺序无关
特点2:不可重复(使用元素的equals方法来判定是否重复)
特点3:能存储null元素,只能存储一次。

Hash算法机制
Set集合在添加或查看元素时,当集合中的元素过多时,就会进行多次的比较,效率变低。为了提高效率,在设计元素类型时,提供hash算法,用于返回对象的一个int值。在内存中开辟很多小的区域,用于存储一定范围返回值的对象。
       当我们想添加元素或查看元素时,先计算此元素的返回值,然后去相应区域中查找遍历,
       如果在这个区域没有找到对象,说明集合中可以存储这个对象。如果有,然后查看两个对象的equals的返回值。
       equals返回值为true,不能添加
       equals返回值为false,可以添加,添加至对应的单向链表结构中(尽可能的避免发生)

Set接口派生出的子类

HashSet:通过实现hash算法的一种数据结构,无序,不重复。增加/删除时效率高。

LinkedHashSet:通过实现hash算法的一种数据结构,但是通过链表来维持顺序。

顺序与添加顺序一致,在查看检索时效率比较高。

TreeSet:是SortedSet子接口的实现类,使用二叉树的数据结构存储数据并维护元素的顺序。

Set集合的遍历

因为Set集合是无序的,无下标可言,因此不能使用经典for循环。我们可以使用迭代器原理。
         
     (1)调用集合的iterator()获取迭代器
     (2)使用foreach循环

JAVA---集合子接口之Set相关推荐

  1. Java集合Collection接口中的常用方法演示

    Java集合Collection接口中的常用方法演示 添加 add(Objec tobj) 和 addAll(Collection coll) 获取有效元素的个数 int size() 清空集合 vo ...

  2. java集合框架——接口图+类图+遗留类图

    [0]README 0.1)绝对的干货,理清 java集合框架中类和接口的层次关系:

  3. JAVA集合Connection接口和Map接口常用的类及区别

    JAVA集合详解 文章目录 JAVA集合详解 前言 一.集合是什么? 1. 集合类 2.集合和数组的区别: 二.使用步骤 一.Connection接口(单列集合) 1.List和Set的优缺点 2.总 ...

  4. Java集合——List接口学习总结

    一.ArrayList实现类 1. 常用方法 增加:add(int index, E element)删除:remove(int index) remove(Object o)修改:set(int i ...

  5. Java集合的接口和类层次结构图以及代码示例

    1. Collection vs Collections 首先,"Collection"和"Collections"是两个不同的概念.正如你从下面结构图看到的, ...

  6. Java集合---Collection接口的常用方法

    Collection常用方法 size() 功能说明 返回当前集合中元素的总数量 代码实现 import java.util.ArrayList; import java.util.Collectio ...

  7. Java集合——Map接口学习总结

    一.HashMap实现类 1.常用方法 增加:put(K key, V value)删除:clear() remove(Object key)修改:查看:entrySet() get(Object k ...

  8. java集合的接口和类层次结构图

    1. Collection vs Collections 首先,"Collection "和"Collections"是两个不同的概念. 正如下面的层次结构图中 ...

  9. 第十五期:详解Java集合框架,让你全面掌握!

    一.Java集合框架概述 集合可以看作是一种容器,用来存储对象信息.所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下. 数组与集合的区别如下 ...

  10. Java集合框架--List、Set、Map

    Java集合框架接口和类的层次结构: java.util.Collection [I] +--java.util.List [I]+--java.util.ArrayList [C]+--java.u ...

最新文章

  1. 不想被问年终奖?2018年春节自救攻略来了!
  2. tap/tun设备 veth设备
  3. 均值定理最大值最小值公式_如何理解中值定理?三大微分中值定理的几何意义及其证明介绍。...
  4. Spring依赖注入–字段vs设置器vs构造函数注入
  5. python枚举类的意义_用于ORM目的的python枚举类
  6. fpga如何约束走线_FPGA设计约束技巧之XDC约束之I/O篇 (上)
  7. 雷军:疫情影响了小米的生产 正加快小米10系列供货
  8. matplotlib之plot,figure(笔记一)
  9. PHP5.3版本安装
  10. python黑帽子学习
  11. cs1.6服务器弹道优化,CS1.6弹道优化命令.doc
  12. 建模算法(十)——灰色理论之关联度分析
  13. WinDriver驱动程序开发入门教程
  14. excel单元格中换行的办法/word中添加脚注的方法
  15. 个人博客的Travis持续集成之路
  16. 网友发现Q版西游:唐僧师徒脸谱上50元人民币
  17. 人脸识别(Facenet)
  18. Python杀死Excel?众多模块哪家强
  19. long型和int型的区别
  20. idea从零到精通02之idea基础设置

热门文章

  1. 样本均值的特征与分布
  2. (转)TTime, TDateTime
  3. 对话张冬洪 | 全面解读NoSQL数据库Redis的核心技术与应用实践
  4. centos7 安装最新rabbitmq,并设置开机自启
  5. python上传百度云_python通过百度云api的方式上传或下载文件
  6. Formal Verification (三) abstraction strategy、reduce complexity for convergence
  7. 不存在开发板或没有链接_手把手教你搭建织女星开发板RISC-V开发环境
  8. 你当前的windows版本即将停止支持。
  9. 形式逻辑(07)性质判断 和 推理
  10. ONF代理执行董事Rick Bauer出走MEF