Java中提供了HashSet、TreeSet、LinkedHashSet三种常用的Set实现,以下具体分析它们的用法和性能。

我们使用Set的原因是Set集合不包含重复元素,HashSet、TreeSet和LinkedHashSet三种类型什么时候使用它们,使用哪个这是一个很重要的选择性问题,正确的选择会大大提升程序运行效率;总结一下,如你的需求是要一个能快速访问的Set,那么就要用HashSet,如果你要一个排序Set,那么你应该用TreeSet,如果你要记录下插入时的顺序时,你应该使用LinedHashSet。把握这几个原则,是不是选择起来就简单多了。

Set接口的特性,Set接口继承了Collection接口,Set集合中不能包含重复的元素,每个元素必须是唯一的,你只要将元素加入set中,重复的元素会自动移除。下面分三方面对它的三个实现类进行说明。

对于有序无序的理解

集合所说的序,是指元素存入集合的顺序,当元素存储顺序和取出顺序一致时就是有序,否则就是无序。

HashSet继承AbstractSet,实现Set、Cloneable、Serializable接口

HashSet类:HashSet是采用hash表算法来实现的,其中的元素没有按顺序排列

结构图:

示例:

插入3、2、99、1、3五个元素

输出了四个元素

学习笔记~~~~~Set接口实现相关推荐

  1. EJB3.0学习笔记---多接口的时,实现类处理方法:

    EJB学习笔记--- 1.胖客户端:指的是定义的接口太多了,接口做的工作太多; 胖接口: 2.EJB实现类型的定义,用注解的方式,当一个EJBbean,实现了多个接口的时候, 需要用注解的方式指明哪一 ...

  2. 【软件测试学习笔记】接口自动化测试基础-Day1 网络协议 2020-09-21

    提示:本文是根据哔哩哔哩源码视频接口测试学习笔记 目录 前言 一.OSI七层协议 1.物理层  ---  只负责传输二进制电信号(无协议) 2.数据链路层 --- 分组.广播(以太网协议) 2.1 M ...

  3. typescript学习笔记1 —— 接口(interface)

    typescript是微软出品的,javascript的超集.让javascript的写法很类似java,核心功能是让JavaScript这个弱类型的语言,增加类型检查,更适合编写企业级应用.之前的a ...

  4. 泛微E9后端学习笔记 - API接口调用过程

    参考:E9BackendDdevelopmentGuide.pdf (e-cloudstore.com) 根据文档指引在E9安装目录下可找到如下两个文件夹 com.engine目录是核心业务逻辑类所在 ...

  5. TypeScript学习笔记之 接口(Interface)

    在java中,接口是用来定义一些规范,使用这些接口,就必须实现接口中的方法,而且接口中的属性必须是常量. javascript中是没有接口的概念的.所以TypeScript在编译成 JavaScrip ...

  6. 网络编程学习笔记(套接口超时)

    有三种方法给套接口上的I/O操作设置 超时: 1.调用 alarm,在到达指定时间 时产生 SIGALRM信号,可能与进程中其他已有的alarm调用 冲突 2.使用select阻塞在等待I/O上,se ...

  7. C#.NET学习笔记 -类,接口,对象

    在开始谈接口和类的总结之前,先来了解接口和类的基本概念.熟悉了概念再来看代码就容易理解些. 先来看类的概念:什么是类? 类是面向对象程序设计的核心,实际上是一种复杂的数据类型.将不同类型的数据和与这些 ...

  8. Java学习笔记——函数式接口

    一.函数式接口概述 函数式接口:有且仅有一个抽象方法的接口. Java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于 Lambda表达式使用的接口.只有确保接口中有且仅有一个抽 ...

  9. Java学习笔记004——接口、克隆、回调、内部类

    接口 1.接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义 2.定义接口,如: public interface Abc{ int aaa(Object other) } 3 ...

最新文章

  1. Web APi之消息处理管道(五)
  2. MySQL性能优化之参数配置
  3. 为什么在iOS7中,UITableView顶部的UITableViewStyleGrouped样式具有额外的填充
  4. 令人头疼的clientTop、scrollTop、offsetTop
  5. Linux7安装系统服务,linux系统安装及初始服务优化-centos7.4
  6. silverlight中如何将string(字符串)写入Resource(资源)?
  7. web服务器软件_概述
  8. 将select中的项从一个移动到另一个select中
  9. leetcode567. 字符串的排列
  10. VBScript函数
  11. vsftpd 配置-掉坑记
  12. android wear系统源码,android wear5.1怎么样 android wear5.1更新评测
  13. 阅读器背景推荐和效果图
  14. 开博尔android播放器,高端安卓播放器的选择——开博尔Q10Plus 二代 4K高清播放器...
  15. 阿里云服务器部署javaweb
  16. 服务器阵列状态显示verify,[转载]转载:关于RAID--Build/VerifyClearQuick Init众说
  17. 冲天炉节能环保:烟气净化及烟气余热回收
  18. 管理学博士申请考核经验分享——信息收集篇
  19. 什么是DDL、DML、DCL、DQL
  20. zigbee CC2530 系列教程 0 课程介绍

热门文章

  1. jquery.ui.draggable中文文档jquery 自由拖拽类~study~
  2. 怎样查看电脑开机记录
  3. perl中的map和grep
  4. 很强大的FFMPEG API Documentation
  5. struct和typedef struct在C与C++中用法
  6. 【剑指offer15.二进制中1的个数】——位操作(左移右移等)
  7. 【TensorFlow】——实现minist数据集分类的前向传播(常规神经网络非卷积神经网络)
  8. 学习笔记(10):Python网络编程并发编程-粘包现象
  9. python需要背的英语单词怎么写_学Python必须背的42个常见单词,看看你都会吗?...
  10. 原生php登录注册,原生php登陆注册