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)]

Tartancalib标定OAK-FFC_4p(上) 1.使用Tartancalib标定双目或多目相机前,先对单个相机标定获得内参,再获得外参。 阅读详情

相关推荐

脑电数据预处理十四:主成分分析(PCA)用于伪迹去除与降维

本文探讨了主成分分析(PCA)在脑电图(EEG)预处理中的双重应用。针对EEG数据的高维特性和伪迹干扰问题,PCA既可有效去除高振幅伪迹(如眼动、心电等),又能实现数据降维。文章详细解析了PCA的核心原理,包括正交基向量投影和方差最大保留机制,并提供了基于MNE-Python的完整实现方案。通过代码示例展示了PCA在伪迹去除和降维中的具体应用效果,包括功率谱密度和时域波形的可视化对比。虽然ICA在复杂伪迹处理上更具优势,但PCA以其算法简单、计算高效的特点,成为EEG分析流程中不可或缺的基础工具。

qq_32516809的博客 1417

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

数字IC设计之时序分析基础概念汇总

时序分析主要有两种办法:静态时序分析: (static timing analysis,STA),是遍历电路存在的所有时序路径,根据给定工作条件(PVT)下的时序库.lib文件计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足约束要求,根据最大路径延时和最小路径延时找出违背时序约束的错误。

weixin_45230720的博客 5607

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

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

zevjay的博客 511

5分钟搞定PettingZoo多智能体环境搭建:从安装到运行第一个Demo

本文详细介绍了如何在5分钟内完成PettingZoo多智能体环境的搭建,从安装到运行第一个Demo。通过精准的版本控制和常见问题解决方案,帮助开发者快速上手多智能体强化学习(MARL)环境配置,并提供了实战案例和性能优化技巧。

backprop5master的博客 221

【SerDes】美信GMSL2-CSI调试心得

美信GMSL2加解串器芯片家族广泛应用于车载和工业视觉系统。文章介绍了MAX96717/MAX96717F加串器和MAX96724/MAX96724R解串器的关键特性,包括支持MIPI CSI-2接口、6Gbps传输速率等功能。提供了基于高通平台的demo系统配置和调试步骤,重点阐述了Link Lock、PCLK检测和Video Lock等关键调试环节,并详细说明了像素模式,隧道模式的工作原理及寄存器配置示例。文中还包含通过I2C读写寄存器的具体操作指令,取流freeze可能原因和解决方法。

qq_38089448的博客 2494

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

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

忘尘丶莫负的博客 354

ur3手眼标定+realsenseL515

知乎 csdn

AI_future的博客 978

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

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

耳东er的博客 204

Unreal5从入门到精通之如何解决在VR项目在头显中卡顿的问题

以前我们使用Unity开发VR,Unity提供了非常便利的插件和工具来做VR。但是由于Unity的渲染效果不如Unreal,现在我们改用Unreal来做VR了,所有的VR相关的配置和操作都要重新学习。今天就来总结一下,我在开发VR过程中碰到的所有问题。好了,以上就是我目前做VR时碰到的一些问题,希望对你有所帮助。

TxNet 2482

【网络教程】Ubuntu有线连接消失,无法联网怎么办!(亲测有效!)

文章目录问题描述解决方案 问题描述 今天打开Ubuntu,突然发现无法连接网络,并且打开设置,发现设置里面的网络已经没有了有线连接,只有VPN设置选项,如图 解决方案 按照下列的代码执行即可! # 关闭网路 service NetworkManager stop # 删除NetworkManager缓存文件 sudo rm /var/lib/NetworkManager/NetworkManager.state # 打开网络 service NetworkManager start 运行完

XiaoqiangClub的博客 1万+

java基础——java集合set详解

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

qq_47980550的博客 4582

【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通

本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。

MQ0522的博客 4843

【集合框架Set进阶】

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

weixin_64178283的博客 1883

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java_集合进阶Set集合

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

qq_48083892的博客 1278

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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、付费专栏及课程。

余额充值