Java进阶:【集合】set接口

深入解析Java中Set接口 在Java中,数据结构是非常重要的一部分,而Set接口作为Java集合框架中的一部分,具有处理数据的独特能力。Set接口提供了无序、不重复的集合,可以存储任何类型的对象。本文将介绍Java集合框架中Set接口的概念、原理、应用场景、优缺点以及实现代码。同时,本文将为读者提供一些基本的测试用例和总结。Set接口是Java集合框架中的一部分,它扩展Collection接口,提供了一种无序、不重复的集合。也就是说,在Set中,所有元素都是唯一的,不存在重复。 阅读详情

set接口

特点:无序,唯一,这里的无序是相对list来说的,不是随机,

API:相对于list,没有索引的相关方法,

那么证明我们的遍历方法有:

(1)迭代器

(2)增强for循环

hashset实现类使用

无序,唯一,我们会发现重复存放的元素,输出的时候只会有一个,那如何验证呢,add()是一个bool返回值方法,所以我们输出add方法来看看去呗

我们可以发现,第一次添加hello,的返回结果时true成功的,第二次重复的时候就是false失败的,

    public static void main(String[] args) {
        HashSet<String> hs = new HashSet<>();
        System.out.println(hs.add("hello")); //true
        hs.add("hello");
        hs.add("hi");
        hs.add("html");
        hs.add("apple");
        hs.add("hello");
        System.out.println(hs.add("hello"));//false
        System.out.println(hs);
        System.out.println(hs.size());
    }

自定义引用类型的数据:

    public static void main(String[] args) {
        HashSet<Student> hs = new HashSet<>();
        hs.add(new Student("小丽",19));
        hs.add(new Student("小hu",29));
        hs.add(new Student("小Li",39));
        hs.add(new Student("小tian",49));
        hs.add(new Student("小丽",19));

        System.out.println(hs.toString());
    }

我自定义的类型不满足,唯一,无序的特点,为什么呢?

HashSet简要原理图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gT9Gm9MD-1637924738025)(javaSE.assets/image-20210705100134495.png)]

原因:我们的Student类没有重写hashCode和equals方法

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                name.equals(student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

重写之后,就符合HashSet的无序,唯一的特性了

hashSet原理:

底层与hashmap十分相似,下图是属性和构造器的分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xOz3EbqH-1637924738026)(javaSE.assets/image-20210705115010046.png)]

collection总结图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3JzoND7r-1637924738027)(javaSE.assets/image-20210705103626009.png)]

由ip地址和子网掩码求网络号、主机号、广播地址(超详细) 1、用二进制数表示IP地址   在进行计算之前,我们首先要学会十进制的IP地址怎么转换为二进制的IP地址。   给出一个例子: 十进制:172.16.25.3 二进制:10101100.00010000.00011001.00000011 1、如果两台主机的网络号相同,我们就说它们是同一网段 2、主机号的意义 - 1)主机号部分全变成1,即为该网段的广播地址 - 2)主机号部分全变成0,即为该网段的网路地址(网络号) 3、如果主机号部分为x位,则该网络能容纳最大主机数为: 2的x次方-2。减2 阅读详情

相关推荐

【AI编程】用AI开发STM32软件(1):环境配置+AI编写LED闪烁

现在AI编程这么火,不拿来开发嵌软也太可惜了。笔者最近刚好有个2学分的实践课,要自己做项目,这不,机会就来了。笔者特意记录下来其过程,以供大家学习和参考。使用:VSCode+Copilot+EIDE+STM32CubeMX,单片机用最经典的stm32f103c8t6+STLink。

qq_23220445的博客 4572

Java进阶:List集合和Set接口

List集合和Set接口List集合1.1 List接口介绍1.2 List接口中常用方法List的子类2.1 ArrayList集合2.2 LinkedList集合Set接口3.1 HashSet集合介绍3.2 HashSet集合存储数据的结构(哈希表)3.3 HashSet存储自定义类型元素3.4 LinkedHashSet3.5 可变参数 List集合 学习了Collection接口的使用后,再来看看Collection接口中的子类,具体研究下他们的特质。 接下来,我们一起学习Collectio

david2000999的博客 324

电表协议避坑指南:DLT645-2007与Modbus RTU的5大核心差异对比

本文深入对比了DLT645-2007与Modbus RTU两大电表通讯协议的核心差异,涵盖协议定位、数据地址、报文结构及实测性能。DLT645-2007作为电力行业标准,数据定义统一但效率受限;Modbus RTU作为通用协议,灵活高效但需依赖厂家点表。文章结合实测数据与开发经验,为不同场景下的协议选型与编程实践提供了清晰的避坑指南。

weixin_29166013的博客 108

Java一分钟之-集合框架进阶:Set接口与HashSet

HashSet是基于哈希表实现的Set接口实现,它没有元素顺序,添加元素速度快,但不保证元素的排列顺序。HashSet不允许元素重复,这意味着如果尝试添加已存在的元素,add方法将返回false。// ...构造器、getter、setter等省略...@Override@Override// false,因为name相同,被视为重复理解并熟练使用Set接口和HashSet,可以帮助我们更好地组织和管理不重复的数据集。

zevjay的博客 511

具有I2S输出的多模数字麦克风ICS-43434咪头LR引脚接地或电源WS接LRCLK

ICS-43434 是一款数字 IS 输出底部收音孔麦克风。完整的 ICS-43434 解决方案包括 MEMS 传感器、信号调理、模数转换器、抽取和抗混叠滤波器、电源管理以及行业标准的 24 位 12S 接口。12S 接口允许 ICS-43434 直接连接到数字处理器,例如 DSP 和微控制器,而无需系统中的音频编解码器。

易板 5664

【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (下篇)(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 1118

【02】Java进阶:08-Collections类、Set接口、Map集合、集合的嵌套、模拟斗地主洗牌发牌

day08【Collections、Set、Map、斗地主排序】 今日内容 Collections工具类 Set集合------>重点 Map集合---->重点 练习 教学目标 能够使用集合工具类 能够使用Comparator比较器进行排序 能够使用可变参数 能够说出Set集合的特点 能够说出哈希表的特点 使用HashSet集合存储自定义元素 能够说出Map集合特点 使用Map集合添加方法保存数据 使用”键找值”的方式遍历Map集合 使用”键值对”的方式遍历Map集合

忘尘丶莫负的博客 354

APP抓包-代理转发绕过反代理+Xposed绕过证书校验

而这里的牛牛不止设置了反代理还设置了证书校验,一闪而过的三个数据包就是在校验证书。而proxifier工具的转发机制获取的是网络接口出口数据,相当于是在网络接口设代理。这个时候就可以在夜神打开牛牛开始抓包了,打开牛牛可以看到proxifier有夜神流量通过。关闭代理之后牛牛就正常了,可恶的牛牛啊,这样我没办法抓包啊,怎么办啊。模拟器开启代理,burp开启监听。打开牛牛app,牛牛不在报错。牛牛app检测的是系统代理,也就是在模拟器或手机上设置的代理。再在浏览器下载两个模块,在夜神安装,用来屏蔽证书校验。

xiaoheizi的博客 7530

Java集合04:Set接口 & Map接口

关于java.util.Set接口(单个方式存储元素) 一、HashSet集合 HashSet集合是非线程安全的。 HashSet集合存储元素的特点:无序不可重复。 ——无序:存进去的顺序和取出来的顺序不一定相同。 ——不可重复:存进去一个1,不能再存进去一个1。 放到HashSet集合中的元素实际上是放到HashMap集合中的key部分,底层是哈希表。 二、TreeSet集合 TreeSet集合存储元素的特点:无序不可重复的,储存的元素是可以自动按照大小顺序排序的。 ——无序:存进去的顺序

耳东er的博客 204

COMSOL+AI实战:5个超实用技巧让你的仿真效率翻倍(附Python代码)

本文详细介绍了如何将人工智能(AI)与COMSOL仿真软件结合,通过Python脚本实现五大实用技巧,包括自动化生成数据集、构建代理模型、集成AI优化算法、利用神经网络加速场量求解以及智能结果分析,从而显著提升多物理场仿真的效率和自动化水平。

weixin_29230865的博客 443

5、硬件工程师笔试面试——上拉电阻、下拉电阻(2025版本)

本文系统介绍了上拉电阻和下拉电阻的原理与应用。上拉电阻通过连接电源确保电路高电平状态,常用于数字电路防抖、OC门驱动等场景;下拉电阻连接地线维持低电平,适用于低电平触发电路。文章详细分析了两种电阻的选择方法、功耗与响应速度的平衡策略,以及在高速信号传输中的影响差异。同时对比了二者的优缺点,并提供了模拟电路中的应用实例。最后给出了电阻值计算的工程方法,为硬件工程师的电路设计提供了实用参考。

XU157303764的博客 2868

java基础——java集合set详解

本文深入探讨了Java中的Set接口及其主要实现类,包括HashSet、LinkedHashSet和TreeSet。Set接口的核心特性是元素唯一性,适用于数据去重、成员检查等场景。文章详细介绍了Set的常用方法,如add、remove、contains等,并通过代码示例展示了如何使用这些方法。此外,文章还对比了不同Set实现类的特点和使用场景:HashSet适用于快速查找和插入,LinkedHashSet保持插入顺序,TreeSet则支持自动排序和范围查询。最后,文章总结了Set的三种主要遍历方式(增强型

qq_47980550的博客 4582

【UML】-- 期末试题题库含答案(各章题目、选择题、填空题、简答题、画图题)

每章都有对应的题目和答案,选择题,填空简答,大题,答案已标红,方便大家观看

个人博客 1万+

【集合框架Set进阶】

本文深入剖析了Java中HashSet、LinkedHashSet和TreeSet三大Set实现类的底层原理与使用场景。HashSet基于HashMap实现去重,依赖hashCode()和equals()方法;LinkedHashSet通过LinkedHashMap维护插入顺序;TreeSet则借助TreeMap实现元素排序。针对并发场景,文章分析了CopyOnWriteArraySet的写时复制机制及其适用场景。

weixin_64178283的博客 1883

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java_集合进阶Set集合

最后,将所有的Collection集合总结一下,要求大家掌握每一种集合的特点,以及他们的体系结构。

qq_48083892的博客 1278

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java,集合Collections类Set接口

需求:1班级有第三名同学,学号和姓名分别为:001=张三,002=李四,003=王五,2班有三名同学,学号和姓名分别为:001=黄晓明,002=杨颖,003=刘德华,004=朱丽倩,请将同学的信息以键值对的形式存储到2个Map集合中,在将2个Map集合存储到List集合中。public Set entrySet():获取到Map集合中所有的键值对对象的集合(Set集合)public Set keySet(): 获取Map集合中所有的键,存储到Set集合中。

2401_86102746的博客 1642

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java进阶之单列集合Set接口下的通用方法

本文介绍了Java集合框架中的Set接口及其常见实现类。Set接口继承自Collection,主要特点是不允许重复元素且无序(HashSet)或有序(TreeSet、LinkedHashSet)。文章详细讲解了Set的核心方法:添加(add/addAll)、删除(remove/clear)、检查(contains/isEmpty)等操作,并通过代码示例展示了这些方法的使用。同时比较了三种主要实现类:基于哈希表的HashSet(无序高效)、维护插入顺序的LinkedHashSet和基于红黑树的TreeSet(

freed_Day的博客 748

【JAVA进阶】Set集合、Map集合

一、Set系列集合Set系列集合特点Set集合实现类特点哈希表的组成在了解哈希表之前需要先理解哈希值的概念是JDK根据对象的地址,按照某种规则算出来的int类型的数值。public int hashCode​():返回对象的哈希值3.TreeSetTreeSet集合默认的规则自定义排序规则TreeSet集合存储对象的的时候有2种方式可以设计自定义比较规则1. 如果希望元素可以重复,又有索引,索引查询要快?用ArrayList集合,基于数组的。(用的最多)

Javascript_tsj的博客 1594

Java集合进阶之Collection单列集合(Set)

目录 前言 Set集合 Set概述 Set特点 HashSet集合 HashSet概述 HashSet特点 HashSet集合保证元素唯一性源码分析 LinkedHashSet集合 LinkedHashSet概述与特点 TreeSet集合 TreeSet特点 TreeSet(排序方式) 总结 前言 Hello!上一期我大致讲解了关于Collection单列集合以及它的子接口List集合的概述、特点和遍历等,今天我为大家讲解关于Collection集合的另一个子...

乔巴俊儿~~的博客 737

Java基础:List集合和Set接口

接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。看完API,我们总结一下:22、33的顺序完成的)。它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引。

2401_89312271的博客 699

【Java】集合进阶——Set集合

3.Set集合 3.1Set集合概述和特点 不包含重复元素的集合 没有带索引的方法,所以不能使用普通for循环遍历 3.2哈希值 哈希值:是JDK根据对象的地址或字符串或者数字算出来的int类型的数值 Object类中有一个方法可以获取对象的哈希值 public int hashCode():返回对象的哈希码值 对象哈希值的特点 同一个对象多次调用hashCode()方法返回的哈希值...

zwb的博客 845

Java集合框架Set接口及实现类

Set接口 Set接口继承于Collection接口,不包含重复元素的集合,往Set集合中存放对象时,它会自动调用Equals方法来比较是否与Set集合中的已有元素重复。因此,要存放到Set集合中的对象,在对应类中就需要重写equals方法(比较对象地址值)和hashCode方法(比较哈希码值),不过java SE API提供的8种数据包装类,String类,Date类,Calendar类都重写...

wjsone的博客 620

java -集合 set接口

Set接口,用于创建唯一对象集合。 在java.util下的Iterator接口以用来遍历st集合,Iterator接口的引用可以通过使用Set接口的iterator方法获取,Iterator接口包含多种方法,例如hashNext(),next().用于帮助遍历set集合 HashSet类 (无序) 该类提供了set接口的实现以及使您可以创建一个可在其中快速插入的集合。因为他不会对元素进行排序 p...

共勉 699

【Java】集合.Set接口

Java.集合.Set集合 一、Set集合:HashSet 1.HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构 2.哈希表又叫做散列表 哈希表是一个数组,每一个元素是一个单向链表。 每个单向链表都有一个独一无二的hash值,代表数组上的下标。 在某个单向链表中的每一个节点上的hash值都是相等的。 hash值实际上是key调用hashCode方法,通过"has......

懂得一千零一种,赋予你失败的方法! 631

十五、Java集合框架之Set接口和集合输出

1、Set 接口 1.1、Set接口简介 Set 接口与List 接口一样都属于Collection子接口,但是Set接口里面最大特点在于不能够进行重复元素的数据保存。 观察Set接口的定义: public interface Set<E> extends Collection <E> 在JDK1.9以前,Set接口并没有对Collection接口的方法进行任何的扩充...

落日的博客 1113

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 285
上一篇: Java进阶:【集合】迭代器原理
下一篇: Java进阶:【集合】Map接口
冷环渊
博客等级 码龄7年 1130粉丝 176原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值