Java集合之Set

Java Set 集合 Set是 Java 集合框架中的一部分,它代表了一个不重复元素的集合。这意味着Set不允许包含重复的元素,每个元素在集合中都是唯一的。Set集合通常用于存储无序的、不重复的对象,例如一组唯一的整数或字符串。Set集合是 Java 中一种非常有用的数据结构,用于存储不重复的元素。本博客介绍了Set集合的基本概念、创建和初始化、基本操作、遍历、不同实现类、性能考虑、使用注意事项、高级用法以及示例代码。希望通过本文的介绍,您对Set集合有了更深入的了解,并能够在实际编程中灵活运用。 阅读详情

继承set接口的类有AbstractSet, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet,接下来介绍其中几种。


HashSet此类实现 Set 接口,它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。 jdk源码中有private transient HashMap<E,Object> map说明它其实是由HashMap实例支持。

LinkedHashSet具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代。注意,插入顺序不 受在 set 中重新插入的 元素的影响。此类提供所有可选的 Set 操作,并且允许 null 元素。与 HashSet 一样,它可以为基本操作(add、contains 和 remove)提供稳定的性能,假定哈希函数将元素正确地分布到存储段中。由于增加了维护链接列表的开支,其性能很可能会比 HashSet 稍逊一筹,不过,这一点例外:LinkedHashSet 迭代所需时间与 set 的大小 成正比,而与容量无关。HashSet 迭代很可能支出较大,因为它所需迭代时间与其容量 成正比。 


TreeSet基于 TreeMap 的 NavigableSet 实现(jdk源码private transient NavigableMap<E,Object> m;)。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。 

以上几类基本方法一致,接下来看它们添加数据的效率:

public class Test_SetSpeed {
	static long start = System.currentTimeMillis();
	static long test(Set set) {
		for(int i=0;i<500000;i++) {
			set.add("a");
		}
		long end = System.currentTimeMillis()-start;
		return end;
		
	}
	public static void main(String[] args) {
			HashSet<String> hashSet = new HashSet<>();
			LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
			TreeSet<String> treeSet = new TreeSet<>();
			System.out.println("hashset"+test(hashSet));
			System.out.println("linkedset"+test(linkedHashSet));
			System.out.println("treeset"+test(treeSet));
	}

}
输出:

hashset24
linkedset47
treeset90






从USB 2.0到USB 3.x:Synopsys SVT USB VIP配置避坑与接口选择指南 本文详细解析了从USB 2.0到USB 3.x的Synopsys SVT USB VIP配置要点,涵盖协议版本选择、物理接口匹配及UVM层次化架构实现。重点介绍了layering sequence的配置技巧和常见问题解决方案,帮助验证工程师高效避坑并优化验证流程。 阅读详情

相关推荐

Camera 基础知识

Raw Sensor输出的Data格式为Raw,图像的效果处理使用BB端的ISP,BB端接收Raw data后进行一系列的图像处理(OB,Shading,AWB,Gamma,EE,ANR等),效果方面由BB端控制,需要针对不同的模组进行效果调试,Raw sensor是目前的主流,数据量比YUV Sensor小(RAW10 格式的sensor 1个pixel 10个bit)使用平台ISP处理,能支持较大的size。不过,相位对焦并不是那么完美,它对光线的要求就比较高,在弱光拍摄环境下,相位对焦就无能威力了。

手机-手表蓝牙开发工程师的博客 3064

【JDK源码】Set集合源码分析

一、Set集合概述 Set集合作为存储元素的一种容器,其实现类有LinkedHashSet、HashSet、TreeSet。这里为什么要将它们放在一起整理分析呢,打开这些实现类的源码,可以看到一个很明显的特征 —— Set集合功能的实现依赖于Map,比如HashSet依赖HashMap类,TreeSet依赖NavigableMap接口(实际上是TreeMap类),因此Set集合的实现细节转移到了Map中,这里重点放在整理Set集合的特点和相关API。 Set集合的依赖关系,如图所示: 根据图...

小确幸的博客 488

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

死磕 java集合之ConcurrentSkipListSet源码分析——Set大汇总

问题 (1)ConcurrentSkipListSet的底层是ConcurrentSkipListMap吗? (2)ConcurrentSkipListSet是线程安全的吗? (3)ConcurrentSkipListSet是有序的吗? (4)ConcurrentSkipListSet和之前讲的Set有何不同? 简介 ConcurrentSkipListSet底层是通过ConcurrentNavi...

weixin_34378969的博客 341

PLL Performance,Simulation and Design 4th学习笔记——Chapter1

Chapter1:基本PLL概述 VCO:Voltage-Controlled Oscillator压控振荡器,对于给定的一个输入电压,输出特定频率的振荡信号。 PLL:Phase-Locked Loops锁相环,输出特定频率,特定相位的振荡信号。 基本PLL操作和术语 基本模块 基本模块 输入 输出 传输函数 说明 XTAL - 参考频率ϕref\phi_{ref}ϕref​ - 稳定的晶振提供输入参考频率(这里用相位,便于理解鉴相器) R Counter ϕref\phi_{ref

张硕的博客 1553

SRAM:SRAM入门指南与工作原理

SRAM(Static Random Access Memory),即静态随机存取存储器,是一种能够读取和写入数据的内存(RAM)。它使用由晶体管组成的触发器来存储数据,只要有电源供应,数据就可以稳定地保存。与动态随机存取存储器(DRAM)不同,SRAM 不需要周期性地刷新来保持数据。

weixin_42896509的博客 1万+

java基础——java集合set详解

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

qq_47980550的博客 4586

Windows本地部署Ollama+qwen本地大语言模型Web交互界面并实现公网访问

本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具,并安装Open WebUI结合cpolar内网穿透软件,实现在公网环境也能访问你在本地内网搭建的大语言模型运行环境。近些年来随着ChatGPT的兴起,大语言模型 LLM(Large Language Model)也成为了人工智能AI领域的热门话题,很多大厂也都推出了自己的大语言模型,并或多或少的开源了自己的大语言模型,今天就来分享一个最近很火,且对于小白来说比较好上手本地部署的运行本地LLM的工具Ollama。

迪之的博客 1653

【Java集合类】之 Set 集合

一个不包含重复元素的 collection。**更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象

鱼干的博客 1766

史上最小白之RNN详解

1.前言 网上目前已经有诸多优秀的RNN相关博客,但是我写博客的出发点主要是为了加深和巩固自己的理解,所以还是决定自己再进行一下总结和描述,如有不正确的地方欢迎指正~ 2.区分RNN 循环神经网络(Recurrent Neural Network),递归神经网络(Recursive Neural Network),你有没有发现他们的缩写都是RNN,那他们两个是同一回事儿吗?网上有一些博客把这两就当...

Tink1995的博客 4万+

告别信息过载:我是如何用Feedly RSS阅读器打造个人专属信息流的(附Chrome插件使用技巧)

本文分享了如何利用Feedly RSS阅读器有效管理信息过载,打造个人专属信息流的方法。通过科学组织订阅源、智能过滤和跨平台同步技巧,帮助用户从被动接收转为主动筛选,提升信息获取效率。特别推荐使用Feedly的Chrome插件和AI过滤功能,实现高效的信息管理。

weixin_42526015的博客 358

Java Set集合

Set集合 Set接口是 Collection 的子接口。 Set集合不允许包含相同的元素。 如果添加相同的元素, add()返回返回FALSE, 新元素不会加入。 HashSet, TreeSet, EnumSet 是 Set 集合的三个实现类。 HashSet 的性能好于 TreeSet, 因为 TreeSet使用红黑树维护顺序。 LinkedHashSet比 HashSet略慢一点, 因为维护链表带来了额外开销。但是遍历会更快。 EnumSet是所有Set实现类中性能最好的。

yonggang7的专栏 3267

手把手教你学simulink(90.1)--直流电动机实例:基于Simulink的基本模型的直流电动机(DC Motor)建模

直流电动机(DC Motor)因其结构简单、控制方便和良好的调速性能,广泛应用于各种工业自动化、机器人技术、家用电器以及航空航天等领域。为了更好地理解和应用直流电动机的工作原理及其控制系统,本项目旨在通过Simulink对直流电动机进行基本模型的建模与仿真。

MHD0815的博客 441

Java中set系列集合

由于Set是Collection的接口(接口无法被实例化),继承于Collection,所以Set接口中的方法基本上与Collection的相同。3.无索引:不可以使用for循环遍历,无法通过索引获取元素,可以通过foreach和Ierator接口遍历。中的所有元素(set集合中只能通过对象删除,set中没有索引)2.重复性:不可重复,可以用于去重操作。返回在该集合的元素上进行迭代的迭代器(判断该集合中是否包含指定集合。中的所有元素添加到该集合中。),用于遍历该集合所有元素。删除该集合中包含指定集合。

songsj010的博客 1500

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA常用集合set

Java集合框架中的Set接口是Collection接口的一个子接口,它表示一个无序且不包含重复元素的集合。Set接口的主要目的是确保集合中的元素唯一性,即集合中不允许出现重复的元素。它继承自CollectionHashSet和TreeSet。

qq_62791685的博客 2908

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java中的Set集合

上两片博客已经基本的介绍了一下java中的集合分类,list集合和泛型等知识,这篇再介绍一下单列集合中的另外一种集合,Set集合。 看到这篇但是没有看过前两篇的小伙伴可以点一下这里,看一下我之前写的博客。 java中的集合:Collection的简介,子接口List,以及两个实现类 java中的泛型:泛型的的概述,泛型的定义,泛型方法,泛型类,泛型接口,通配符等 好接下来我们进入正题: java...

Jack 2269

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java集合之Set去重

有关于Java集合类你知道哪些?他们各自有什么特征?应用场景为何? 本文以面试题来展开,并以实际编码查看源码来解释。 Set的特征是什么,应用场景是什么? Set的去重是怎么做到的? Set是否能对对象去重? 如何实现Set对对象的去重?

qq_34598665的博客 5381

Java中遍历Set集合的三种方法

1.迭代遍历: Set set = new HashSet(); Iterator it = set.iterator(); while (it.hasNext()) { String str = it.next(); System.out.println(str); } 2.for循环遍历: for (String str : set) { System.out.println(str); } ...

Camel 10万+

Java集合-Set

Set概述 set集合不能存储相同的元素 同时因为其是一个抽象的接口:所以不能直接实例化一个set对象。 Set s = new Set() :× 该接口主要继承于Collections接口,所以具有Collection的一些常见的方法。 常见用法 Sr.No. Method Description 1 add( ) 向集合中添加元素 2 clear( ) 去掉集合中所有的元素 3 contains( ) 判断集合中是否包含某一个元素 4 isEmpty( ) 判断集合是否为

喜欢前端的后端 MelodyJerry 1945

java set 长度_Java笔记:Java集合概述和Set集合

本文主要是Java集合的概述和Set集合1.Java集合概述1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的,如果需要保存数量变化的数据,数组就有点无能为力了;而且数组无法保存具有映射关系的数据。为了保存数量不确定的数据,以及保存具有映射关系的数据,Java提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。2)Java集...

weixin_39962675的博客 2554

JAVA的Set集合

在 Java 中,Set是一种不允许存储重复元素的集合接口,它继承自Collection接口。Set通常用于需要确保元素唯一性的场景,例如去重操作或数学集合运算。以下是关于Setequals()hashCode()HashSet。

2502_90671534的博客 1058

java set集合实现,Java集合的实现细节—Set会合和Map集合

Java集合的实现细节—Set集合和Map集合Set:代表无序、不可重复的集合Map:代表key-value对集合,也称为关联数组从表面上看,Set和Map相似性很少,但实际上可以说Map集合时Set集合的扩展。1、Set集合和Map集合的继承体系Set集合的继承体系Map集合的继承体系2、Set集合和Map集合的关系仔细观察上面两张图,可以发现以下规律:Set MapEnumSet...

weixin_30540871的博客 284

Java集合Set

目录 1 Set集合概述和特点 2哈希值 3 HashSet集合概述和特点 4 HashSet集合保证元素唯一性源码分析 5常见数据结构之哈希表 6 LinkedHashSet集合概述和特点 9Set集合排序 9.1 TreeSet集合概述和特点 9.2自然排序Comparable的使用 9.3比较器排序Comparator的使用 10 hashcode和equals的方法 11 HashSet怎么保证元素的唯一性 12 项目实例 1 Set集合概述和特点 Set集合...

赵广陆 1137

Java Set集合的详解

一,Set Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。 对象的相等性    引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashCode会返回每个对象特有的序号(j

重心开始,重新开始 21万+

Java中Set集合

HashSet set = new HashSet();注意:如果是基本类型请用包装类,比如:int的包装类Integerint age;@Override//先对姓名字典序比较 如果相同 比较年龄=0) {elsereturn 0;ts.add(new Person("瑞贝卡",21));ts.add(new Person("路飞",12));ts.add(new Person("三镇",8));

G81948577的博客 664

Java list转set;JDK8 下list 集合转Set 集合

**List 集合转Set 集合 ** List 集合和Set 集合的区别 在说如何List集合转Set 集合之前我们先回顾一下List 集合和Set 集合的区别。 他们之间比较细致的区别有蛮多的,不过比较粗糙地来说List 和Set 之间的区别有以下那么几点 (1) llist 和 ...

weixin_44012027的博客 1万+
上一篇: Java集合之ArrayList,LinkedList,Vector
下一篇: Java集合之Map
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值