Java Set类

news2024/11/19 16:31:14

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:Java

在这里插入图片描述


目录

  • 👉🏻set
    • 1. 接口与实现
    • 2. 特性
    • 3. 常用方法
    • 4. 示例代码
    • 5. 遍历
    • 6. 线程安全
  • 👉🏻set更多方法
    • 1. 其他常用方法
      • 1.1. `clear()`
      • 1.2. `equals(Object o)`
      • 1.3. `hashCode()`
      • 1.4. `isEmpty()`
      • 1.5. `iterator()`
      • 1.6. `toArray()`
      • 1.7. `toArray(T[] a)`
    • 2. 额外的方法
      • 2.1. `removeAll(Collection<?> c)`
      • 2.2. `retainAll(Collection<?> c)`
      • 2.3. `containsAll(Collection<?> c)`
      • 2.4. `size()`

👉🏻set

1. 接口与实现

Java 的 Set 接口是 Java Collections Framework 的一部分,用于存储不重复的元素集合。常见的实现类有:

  • HashSet:基于哈希表实现,提供快速的查找和插入,元素无序。
  • LinkedHashSet:维护插入顺序,性能与 HashSet 相似。
  • TreeSet:基于红黑树实现,元素按自然顺序排序或指定的比较器排序。

2. 特性

  • 唯一性:不允许重复元素。
  • 无序性HashSetLinkedHashSet 不保持元素的顺序,而 TreeSet 会保持排序。
  • 动态大小:可以根据需要动态扩展。

3. 常用方法

  • add(E e):添加元素,如果已存在则返回 false。
  • remove(Object o):移除指定元素。
  • contains(Object o):检查集合中是否包含指定元素。
  • size():返回集合中元素的数量。
  • isEmpty():判断集合是否为空。

4. 示例代码

以下是使用 HashSet 的简单示例:

import java.util.HashSet;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Set<String> colors = new HashSet<>();
        
        // 添加元素
        colors.add("Red");
        colors.add("Green");
        colors.add("Blue");
        colors.add("Red"); // 重复元素不会被添加
        
        // 打印集合
        System.out.println(colors); // 输出: [Red, Green, Blue] (顺序不定)
        
        // 检查元素
        System.out.println(colors.contains("Green")); // 输出: true
        
        // 删除元素
        colors.remove("Blue");
        
        // 打印集合大小
        System.out.println(colors.size()); // 输出: 2
    }
}

5. 遍历

可以使用增强的 for 循环或迭代器遍历 Set

for (String color : colors) {
    System.out.println(color);
}

6. 线程安全

Set 的实现类通常不是线程安全的,但可以使用 Collections.synchronizedSet() 来创建线程安全的集合。

如果你想了解更具体的实现或用法,欢迎告诉我!

👉🏻set更多方法

当然,除了常用的基本方法,Set 接口还有一些其他的方法。以下是 Set 接口中定义的主要方法:

1. 其他常用方法

1.1. clear()

  • 描述:移除集合中的所有元素。
  • 返回:无返回值。

1.2. equals(Object o)

  • 描述:比较指定对象与集合的相等性。
  • 返回:如果对象与集合相等,则返回 true;否则返回 false。

1.3. hashCode()

  • 描述:返回集合的哈希码值,适用于集合的哈希表存储。
  • 返回:集合的哈希码值。

1.4. isEmpty()

  • 描述:检查集合是否为空。
  • 返回:如果集合没有元素则返回 true,否则返回 false。

1.5. iterator()

  • 描述:返回一个迭代器,用于遍历集合中的元素。
  • 返回Iterator<E> 类型的迭代器。

1.6. toArray()

  • 描述:将集合中的元素转换为一个数组。
  • 返回:包含集合中所有元素的数组。

1.7. toArray(T[] a)

  • 描述:将集合中的元素转换为指定类型的数组。
  • 返回:包含集合中所有元素的数组,如果提供的数组足够大,则使用该数组;否则,创建一个新数组。

2. 额外的方法

2.1. removeAll(Collection<?> c)

  • 描述:从集合中移除所有包含在指定集合中的元素。
  • 返回:如果集合发生变化,则返回 true;否则返回 false。

2.2. retainAll(Collection<?> c)

  • 描述:仅保留集合中包含在指定集合中的元素。
  • 返回:如果集合发生变化,则返回 true;否则返回 false。

2.3. containsAll(Collection<?> c)

  • 描述:检查集合是否包含指定集合中的所有元素。
  • 返回:如果集合包含所有指定元素,则返回 true;否则返回 false。

2.4. size()

  • 描述:返回集合中元素的数量。
  • 返回:集合中元素的数量。

如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

赛氪作媒体支持单位受邀参加首届科普翻译与跨学科专业学术研讨会

2024年9月22日&#xff0c;正值全国科普日之际&#xff0c;首届科普翻译与跨学科专业学术研讨会在上海健康与营养研究所信息中心励志厅成功举行并圆满结束。此次研讨会汇聚了来自全国各地的近60名专家学者、学界及企业界代表&#xff0c;共同探讨科普翻译与跨学科专业的发展。作…

封装一个vue3的文件上传组件(拖拽或点击选择文件)

1. 效果 选择文件后: 2. 代码 <template><divclass"drop-zone c-normal":class"{borderOutline: outline,}"dragover.preventdrop.prevent"handleDrop"click"chooseFiles"><div v-if"files.length < 1"…

FLStudio21Mac版flstudio v21.2.1.3430简体中文版下载(含Win/Mac)

给大家介绍了许多FL21版本&#xff0c;今天给大家介绍一款FL Studio21Mac版本&#xff0c;如果是Mac电脑的朋友请千万不要错过&#xff0c;当然我也不会忽略掉Win系统的FL&#xff0c;链接我会放在文章&#xff0c;供大家下载与分享&#xff0c;如果有其他问题&#xff0c;欢迎…

使用Vue.extend( ) 模仿 elementui 创建一个类似 message 消息提示框

提示&#xff1a;记录工作中遇到的需求及解决办法 文章目录 前言一、目录结构二、代码1. 创建 m-Toast.vue 文件2. 创建 global.js 文件3. 在 main.js 文件中导入 global.js 文件4. 在 App.vue 文件中使用 全局方法创建的 组件 前言 在此之前一直不明白Vue.extend( )干什么用的…

PCL 用八叉树完成空间变化检测

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1八叉树构建与变化检测 2.1.2检测变化的点云 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更…

快速排序(C语言实现)

目录 基本概念 Hoare版本 动图演示 思路 代码实现&#xff1a; 性能分析 取Key优化 三数取中法选择基准&#xff08;Median-of-Three Partitioning&#xff09; 实现步骤 代码实现 挖坑法 基本步骤 动图 示例说明 代码实现 前后指针法 动图示范 思路 代码实…

Linux操作系统中docker

1、docker概述 1、什么是docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows&#xff08;对于windows不是太友好&#xff09;操作系统的机器上&#xff0c;也可以…

Amazon EC2:权限设置指南,构建安全的云环境

在数字化转型的浪潮中&#xff0c;企业纷纷将业务迁移到云端&#xff0c;以提高灵活性和效率。Amazon Elastic Compute Cloud&#xff08;EC2&#xff09;作为 AWS 的核心服务之一&#xff0c;为企业提供了一个强大的云计算平台。然而&#xff0c;随着云环境的复杂性增加&#…

DHCP 中继器

在实际应用中可能会遇到一个比较大的物理网络中存在多个ip子网&#xff0c;而每个ip子网的主机都需要DHCP服务器来动态分配ip地址&#xff0c;实现的方法有两种: 第一种是在每一个子网中设置DHCP服务器&#xff0c;将其分别为每个子网分配ip地址&#xff0c;但此方法会增加开销…

【Hadoop】【vim编辑器】【~/.bashrc 文件】如何编辑

1. 进入 vim 编辑器 在终端中输入以下命令&#xff1a; vim ~/.bashrc 2. 进入插入模式 打开文件后&#xff0c;你将处于普通模式。在普通模式下&#xff0c;你不能直接编辑文本。 要进入插入模式&#xff0c;请按下 i 键。这时&#xff0c;你应该会看到屏幕底部出现 -- 插…

优化java中 HashMap 的容量](capacity值)

我们很多人都知道&#xff0c;分配比我们所需更多的内存可能会对应用程序的性能产生负面影响。因此&#xff0c;使用带有容量的构造函数创建列表可能会产生很大的不同。 但是&#xff0c;使用Maps时&#xff0c;这个优化步骤可能不是那么简单。在本文中&#xff0c;我们将学习…

鸿蒙OpenHarmony【小型系统基础内核(互斥锁)】子系统开发

互斥锁 基本概念 互斥锁又称互斥型信号量&#xff0c;用于实现对共享资源的独占式处理。当有任务持有时&#xff0c;这个任务获得该互斥锁的所有权。当该任务释放它时&#xff0c;任务失去该互斥锁的所有权。当一个任务持有互斥锁时&#xff0c;其他任务将不能再持有该互斥锁…

Redis 主从复制的实现过程

Redis 主从复制的实现过程 1. 初始同步请求2. 快照生成与发送3. 从服务器载入数据4. 增量同步5. 持续同步与部分重同步 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Redis 的主从复制是一个高效的数据同步机制&#xff0c;主要步骤为以下…

5分钟内不能重复发送验证码!

文章目录 引言校验5分钟内不能重复发送验证码生成验证内容保存验证码到缓存获取缓存验证内容验证短信验证码是否正确数据模型see also引言 防止被恶意攻击,使用需要限制用户获取验证码的频率,例如5分钟内不能重复发送验证码!获取验证码接口,也必须进行签名校验。 使用Red…

单片机STM32 外部中断线的使用笔记

一、STM32外部中断线问题小结 1.1 不同的端口同一PIN 在STM32中&#xff0c;不同的端口&#xff08;如PA、PB、PC等&#xff09;上的相同PIN号&#xff08;如PA1、PB1、PC1&#xff09;可以共用一个外部中断线&#xff08;EXTI_Line&#xff09;。这意味着&#xff0c;虽然这些…

[系列]相关的知识点关联

系列 独立&不相关不相关&正交协方差&互相关相关系数协方差&相关系数余弦系数&内积余弦系数&相关系数滤波&卷积卷积&互相关互相关&内积互相关&归一化互相关

Jenkins入门:从搭建到部署第一个Springboot项目(踩坑记录)

本文讲述在虚拟机环境下(模拟服务器)&#xff0c;使用docker方式搭建jenkins&#xff0c;并部署一个简单的Springboot项目。仅记录关键步骤和遇到的坑&#xff0c;后续再进行细节补充。 一、环境准备和基础工具安装 1. 环境 系统环境为本机vmware创建的Ubuntu24.04。 2. yum…

Unity 3D UGUI 系统一口气讲完!(^U^)ノ~YO

UGUI Canvas 画布 Canvas画布是摆放所有 UI 元素的区域&#xff0c;在场景中创建的所有控件都会自动变为 Canvas游戏对象的子对象。 若场景中没有画布&#xff0c;在创建控件时会自动创建画布。 不论是你主动创建还是被动创建&#xff0c;系统都会自动创建一个名为 EventSys…

使用Python解决数据分析中的相关性分析

目录 1.相关系数基础1.1 使用Pandas计算皮尔逊相关系数1.2 计算物品A与其他物品的相关系数1.3 用户间的相关系数1.4 获取相关系数矩阵 2. 相似度计算的Python实现2.1 欧式距离2.2 余弦相似度2.3 皮尔逊相关系数的手动实现 3. 总结 在数据分析中&#xff0c;相关系数是衡量两个变…

应用案例 | HK-MSR数据记录仪如何计算滑雪时膝盖上的应力?

计算滑雪时膝盖上的应力 阿尔卑斯山高山滑雪运动员在滑雪时对膝盖产生的压力有多大&#xff1f;Thea Waldleben&#xff0c;现任瑞士青年速降赛冠军&#xff0c;在她的 "Maturaarbeit"&#xff08;考试项目&#xff09;中回答了这个问题。通过使用HK-MSR数据记录仪&…