从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

  • JavaSenior

    • 反射

    • 注解

    • 集合类

      • 集合介绍
      • List
      • Map
      • Set
        • 常用方法
        • TreeSet
      • Queue
      • Stack
      • Collections
    • Java
  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • JavaSenior
  • 集合类
2022-12-31
目录

Set

# 03.Set

如果我们只需要存储不重复的key,并不需要存储映射的value,那么就可以使用Set​。

  ‍

# 常用方法

​Set​用于存储不重复的元素集合,它主要提供以下几个方法:

  • 将元素添加进Set<E>​​:boolean add(E e)​​
  • 将元素从Set<E>​​删除:boolean remove(Object e)​​
  • 判断是否包含元素:boolean contains(Object e)​​
  • 清空所有元素:void clear()​

‍

​Set​也是一个接口,常用的实现类有HashSet

演示下:

    Set<String> set = new HashSet<>();
    System.out.println(set.add("艾米莉雅"));  //true
    System.out.println(set.add("雷姆"));    //true
    System.out.println(set.add("拉姆"));    //true
    System.out.println(set.add("姬丝秀忒"));    //true
    System.out.println(set.add("姬丝秀忒"));    //false

    System.out.println();
    System.out.println(set.contains("姬丝秀忒")); //true
    System.out.println(set.remove("姬丝秀忒")); //true
    System.out.println(set.remove("姬丝秀忒")); //false,元素已经不存在
    System.out.println(set.size()); //3
1
2
3
4
5
6
7
8
9
10
11
12

‍

注意点:

  • 放入Set​的元素和Map​的key类似,都要正确实现equals()​和hashCode()​方法,否则该元素无法正确地放入
  • ​HashSet​类似一个只存储key、不存储value的Map​,其内部实现就是对HashMap​的一个简单封装
  • ​Set​接口并不保证有序

‍

‍

# TreeSet

和TreeMap类似,Set也有一个TreeSet类,实现了SortedSet​接口,是有序的。

       ┌───┐
       │Set│
       └───┘
         ▲
    ┌────┴─────┐
    │          │
┌───────┐ ┌─────────┐
│HashSet│ │SortedSet│
└───────┘ └─────────┘
               ▲
               │
          ┌─────────┐
          │ TreeSet │
          └─────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14

‍

‍

在遍历TreeSet​时,输出就是有序的:

Set<String> set = new TreeSet<>();
set.add("orange");
set.add("apple");
set.add("banana");
for (String s : set) {
  System.out.println(s);
}
1
2
3
4
5
6
7

‍

同TreeMap​一样,添加的元素必须正确实现Comparable​接口,如果没有实现Comparable​接口,那么创建TreeSet​时必须传入一个Comparator​对象。

‍

‍

在GitHub上编辑此页 (opens new window)
上次更新: 2022/12/31 22:07:34
Map
Queue

← Map Queue→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式