Young Kbt blog Young Kbt blog
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)

Shp Liu

朝圣的使徒,正在走向编程的至高殿堂!
首页
  • java基础

    • Java基础
    • Java集合
    • Java反射
    • JavaJUC
    • JavaJVM
  • Java容器

    • JavaWeb
  • Java版本新特性

    • Java新特性
  • SQL 数据库

    • MySQL
    • Oracle
  • NoSQL 数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • ActiveMQ
    • RabbitMQ
    • RocketMQ
    • Kafka
  • 进阶服务

    • Nginx
  • Spring
  • Spring Boot
  • Spring Security
  • 设计模式
  • 算法
  • 知识
  • 管理

    • Maven
    • Git
  • 部署

    • Linux
    • Docker
    • Jenkins
    • Kubernetes
  • 进阶

    • TypeScript
  • 框架

    • React
    • Vue2
    • Vue3
  • 轮子工具
  • 项目工程
  • 友情链接
  • 本站

    • 分类
    • 标签
    • 归档
  • 我的

    • 收藏
    • 关于
    • Vue2-Admin (opens new window)
    • Vue3-Admin(完善) (opens new window)
GitHub (opens new window)
  • Java 基础 - SE

  • Java 进阶 - SE

  • Java 集合 - Collection

    • Java 集合 - 集合概序
    • Java 集合 - ArrayList
    • Java 集合 - LinkedList
    • Java 集合 - Vector 和 Stack
    • Java 集合 - List 总结
    • Java 集合 - HashMap
    • Java 集合 - Set
      • Set
    • Java 集合 - HashSet
    • Java 集合 - TreeSet
    • Java 集合 - 迭代器
    • Java 集合 - 泛型
    • Java 集合 - Collections 工具类
  • Java 并发 - JUC

  • Java 容器 - Web

  • Java 底层 - JVM

  • Java 版本 - 新特性

  • Java
  • Java 集合 - Collection
Young Kbt
2021-10-22
目录

Java 集合 - Set

  • Set

# Set

Set 注重独一无二的性质,该体系集合可以知道某物是否已经存在于集合中,不会存储重复的元素,用于存储无序**(存入和取出的顺序不一定相同)**元素,值不能重复。

对象的相等性:

  • 引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用 hashcode 方法,会得到相同的结果,如果对象所属的类没有覆盖 object 的 hashcode 方法的话,hashcode 会返回每个对象特有的序号(Java 是依据对象的内存地址计算出的此序号),所以两个不同的对象的 hashcode 值是不可能相等的

  • 如果想要让两个不同的 Person 对象视为相等的,就必须覆盖 Object 继承下来的 hashcode 方法和 equals 方法,因为 Object hashcode 返回的是该对象的内存地址,所以必须重写 hashcode 方法,才能保证两个不同的对象具有相同的 hashcode,同时也需要两个不同对象比较 equals 方法返回 true

该集合中没有特有的方法,直接继承自 Collection

/**
 * Collection
 *      \--List
 *          有序(存储顺序和取出顺序一致),可重复
 *      \--Set
 *          无序(存储顺序和取出顺序不一致),唯一
 * HashSet:它不保证set的迭代顺序;特别是它不保证该顺序恒久不变
 * 注意:虽然set集合的元素无序,但是,作为集合来说,它肯定有它自己的存储顺序,
 * 而你的顺序恰巧和它的存储顺序一致,这代表不了有序,你可以多存储一些数据就能看到效果
 **/
1
2
3
4
5
6
7
8
9
10

案例:Set 集合添加元素并使用增强 for 循环遍历

public static void method1() {
    Set<String> set = new HashSet<>();
    set.add("1");
    set.add("5");
    set.add("2");

    set.add("5"); //重复的不会添加进去
    for (String s : set) {
        System.out.println(s);
    }
}
1
2
3
4
5
6
7
8
9
10
11

最后输出顺序是:1、2、5

编辑此页 (opens new window)
更新时间: 2024/11/02, 18:07:00
Java 集合 - HashMap
Java 集合 - HashSet

← Java 集合 - HashMap Java 集合 - HashSet→

最近更新
01
技术随笔 - Element Plus 修改包名 原创
11-02
02
Reactor - 扩展性
11-02
03
Reactor - 最佳实践
11-02
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Young Kbt | blog
桂ICP备2021009994号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式