HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
随笔
关于作者
  • 《PureJavaCoderRoad》

    • 导读

    • Java基础

    • Java进阶

      • 常用类

      • 集合

        • Comparable接口
        • Deque
        • HashCode和equals
        • Iterator与Collection
        • List
        • Map
        • Queue
        • Set
        • Stack
        • 集合类的介绍
      • 反射

      • IO

      • Java新特性

      • 序列化与反序列
      • 泛型
    • Java高阶

    • 开发辅助工具

    • 计算机网络

    • 数据库

    • JavaEE

    • 中间件

    • 架构

    • 建议

  • PureJavaCoderRoad
  • Java进阶
  • 集合
#Set
码农阿雨
2022-05-26
目录

Set

# Set 介绍

Set是一个 可为null、不可重复 的集合。

至于 是否有序,要看子类的实现。

List 是 有序、可为null、可重复的集合

使用:

import java.util.Set;

# Set 接口的API

Set 接口的API比List少,但用法基本一致:

一般在业务开发中,使用Set的情况比较少。

# Set接口的实现类

常见的实现类有:

  • HashSet
  • TreeSet
  • LinkedHashSet

# HashSet

HashSet是Set接口的典型实现,大多数时候使用Set集合时一般是使用HashSet。

HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。底层数据结构是哈希表。

Set set = new HashSet();

HashSet具有以下特点:

  • 不能保证元素的排列顺序;
  • HashSet不是同步的(线程不安全);
  • 集合元素值可以是null;

HashSet 和 HashMap 一样,用每个元素的hashCode值来计算其存储位置。

# LinkedHashSet

Set linkedHashSet = new LinkedHashSet();

LinkedHashSet 继承 HashSet ,也是根据元素的hashCode值来决定元素的存储位置。底层数据结构是链表。

但它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的。

输出集合里的元素时,元素顺序总是与添加顺序一致,因此LinkedHashSet 是有序的。

但是LinkedHashSet依然是HashSet,因此它不允许集合重复。

# TreeSet

Set treeSet = new TreeSet();

TreeSet可以确保集合元素处于排序状态。

TreeSet内部实现的是红黑树,默认整型排序为从小到大。

可以通过Comparator接口实现自定义排序。

阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#Set
上次更新: 2025-09-05 07:09:03
Queue
Stack

← Queue Stack→

最近更新
01
阿里面试题(答案)
09-05
02
《LeetCode 101》
09-05
03
《LeetCode CookBook》
09-05
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式