Set集合就这么简单!

List、Set、Map集合的简单使用 List继承于Collection接口,是一个有序的Collection。List中允许有重复的元素,实现List接口的常用类有 LinkedList、ArrayList、Vector等。//向集合中添加数据listTest.add("千锋北京");listTest.add("千锋成都");listTest.add("千锋武汉");listTest.add(1, "千锋杭州");Set也实现自Collection接口,Set中的值不能重复。 阅读详情

前言

声明,本文用的是jdk1.8

前面章节回顾:

现在这篇主要讲Set集合的三个子类:

  • HashSet集合

    • A:底层数据结构是哈希表(是一个元素为链表的数组) + 红黑树

  • TreeSet集合

    • A:底层数据结构是红黑树(是一个自平衡的二叉树)

    • B:保证元素的排序方式

  • LinkedHashSet集合

    • A::底层数据结构由哈希表(是一个元素为链表的数组)和双向链表组成。

这篇主要来看看它们比较重要的方法是如何实现的,需要注意些什么,最后比较一下哪个时候用哪个~

强调:在学习本文之前,最好是看过Map系列的文章

看这篇文章之前最好是有点数据结构的基础:

当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~

一、HashSet剖析

首先,我们来看一下HashSet的继承结构图:

640?wx_fmt=png

按照惯例,我们来看看HashSet顶部注释:

640?wx_fmt=png

从顶部注释来看,我们就可以归纳HashSet的要点了:

  • 实现Set接口

  • 不保证迭代顺序

  • 允许元素为null

  • 底层实际上是一个HashMap实例

  • 非同步

  • 初始容量非常影响迭代性能

我本来也是想在写完List集合就转到Set集合的了,可是:看到底层实际上是一个HashMap实例时,我就去学习Map集合先了~

顶部注释说底层实际上是一个HashMap实例,那证据呢?

640?wx_fmt=png

我们再来看一下HashSet整个类的方法和属性:

640?wx_fmt=png

对于学习过HashMap的人来说,简直简单得让人开心,哈哈哈~

我们知道Map是一个映射,有key有value,既然HashSet底层用的是HashMap,那么value在哪里呢???

640?wx_fmt=png

value是一个Object,所有的value都是它

所以可以直接总结出:HashSet实际上就是封装了HashMap,操作HashSet元素实际上就是操作HashMap。这也是面向对象的一种体现,重用性贼高!

建议:先去阅读HashMap就是这么简单【源码剖析】

二、TreeSet剖析

首先,我们也来看看TreeSet的类继承结构图:

640?wx_fmt=png

按照惯例,我们来看看TreeSet顶部注释:

640?wx_fmt=png

从顶部注释来看,我们就可以归纳TreeSet的要点了:

  • 实现NavigableSet接口

  • 可以实现排序功能

  • 底层实际上是一个TreeMap实例

  • 非同步

640?wx_fmt=png

三、LinkedHashSet剖析

首先,我们也来看看TreeSet的类继承结构图:

640?wx_fmt=png

按照惯例,我们来看看LinkedHashSet顶部注释:

640?wx_fmt=png

从顶部注释来看,我们就可以归纳LinkedHashSet的要点了:

  • 迭代是有序的

  • 允许为null

  • 底层实际上是一个HashMap+双向链表实例(其实就是LinkedHashMap)…

  • 非同步

  • 性能比HashSet差一丢丢,因为要维护一个双向链表

  • 初始容量与迭代无关,LinkedHashSet迭代的是双向链表

四、总结

可以很明显地看到,Set集合的底层就是Map,所以我都没有做太多的分析在上面,也没什么好分析的了。

下面总结一下Set集合常用的三个子类吧:

HashSet:

  • 无序,允许为null,底层是HashMap(散列表+红黑树),非线程同步

TreeSet:

  • 有序,不允许为null,底层是TreeMap(红黑树),非线程同步

LinkedHashSet:

  • 迭代有序,允许为null,底层是HashMap+双向链表,非线程同步

从结论而言我们就可以根据自己的实际情况来使用了。

参考资料:

  • https://zhuanlan.zhihu.com/p/29021276

  • https://blog.youkuaiyun.com/panweiwei1994/article/details/76555359

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y。谢谢支持了!希望能多介绍给其他有需要的朋友

文章的目录导航:https://zhongfucheng.bitcron.com/post/shou-ji/wen-zhang-dao-hang

目前初步打算写多线程,你们觉得怎么样呢?可以在评论区留言~


Set 集合详解:无序、不重复的集合,一文详解! 本文详细介绍了Java中Set集合的实现原理与应用场景。首先分析了HashSet的无序、不重复特性及其基于HashMap的底层实现,时间复杂度为O(1);其次探讨了LinkedHashSet的有序性特点,它通过链表维护插入顺序;最后讲解了TreeSet的排序功能及其红黑树实现,时间复杂度为O(log n)。文章还列举了Set集合在数据去重、统计唯一元素等场景的实际应用,并提供了相关代码示例。通过对比三种Set实现的特点和性能,帮助开发者根据具体需求选择合适的集合类型。 阅读详情

相关推荐

[UE5蓝图基础二]1.[1d混合空间] 走和跑的动画切换(shift切换)

再双击”run”进去 我们需要给他指定一个动画姿势,这里就需要给他我们前面做的”1d”混合空间,然后可以看到”1d” 上有个speed参数,代表的速度 从前面的逻辑来看需要通过控制速度来切换动画,那么必然不能写死速度,把速度提升为变量传递进来即可,所以就得到以下蓝图节点。混合空间的概念:混合空间就是可以将角色多个动画混合在一起 ,我们创建动画类就是创建个”Animation”文件夹 在文件夹内创建混合空间。我们目前要实现的是一个走和跑的功能 那么创建1d即可。到这一步混合空间已经做完 下一步做”动画蓝图”

qq_30584617的博客 3299

3分钟搞掂Set集合

前言 声明,本文用的是jdk1.8 前面章节回顾: Collection总览 List集合就这么简单【源码剖析】 Map集合、散列表、红黑树介绍 HashMap就是这么简单【源码剖析】 LinkedHashMap就这么简单【源码剖析】 TreeMap就这么简单【源码剖析】 ConcurrentHashMap基于JDK1.8源码剖析 现...

weixin_33935505的博客 399

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

2301_81256766的博客 1260

Set区分

转载:https://www.cnblogs.com/xiaoxi/p/6229199.html hashset就是往hashmap里面存值,Set.add(obj) = map.put(obj,new Object()),注意如果添加对象的话需要重写hashCode()方法,因为比较的是hashcode值。 TreeSet的话就是可以实现排序,可以自定义排序方式。 ...

weixin_39312465的博客 225

(C#脚本)Unity中角色移动的几种实现方法,以及心得。(适合新手入门)

PS:首先我们要知道,在C#中Transform组件是可以直接调用的,而其他的(例如:Rigidbody,Animator)都需要通过 GetConpoment<组件的名称>(); 来获取进行实例化。 例子:调用Rigidbody2D private Rigidbody2D rb2D;//声明变量实例化 void Start() { rb2d = GetComponent<Rigidbody2D>();//获取 } 1.对Unity脚本写入有一定的思维了解...

qq_48860282的博客 1万+

基于python的奥运会历史数据分析【120年】

数据分析实战案例

xff123456_的博客 3338

java的集合中的Set以及set的实现类HashSet和TreeSet

Set接口 Set是Collection的子接口,与List相对 Set集合中的元素的特点是1,无序性 2,无下标3,无重复的元素 Set是个接口,所以无法直接创建对象,要依赖它的实现类来创建对象 Set的实现类有两个,一个是HashSet,另一个是TreeSet Set<String> set = new HashSet<>(); set.add("c"); set.

HKDxiaofan的博客 2634

避开PSRR仿真三大坑:用Cadence psspxf分析分频器时,这些设置错了白忙活

本文深入探讨了使用Cadence psspxf工具进行分频器PSRR仿真时常见的三大技术陷阱,包括扰动信号参数设置、收敛性优化和后处理信号提取。通过详细的参数推荐和实战技巧,帮助工程师避免仿真误差,提升PSRR分析效率与准确性,特别适用于16分频器等数字-模拟混合电路设计。

weixin_29258297的博客 301

二、集合框架分析Set系列

—&amp;amp;amp;amp;amp;amp;amp;amp;gt;Set:集合,元素是无序的(因为没有索引),元素不可以重复。可以有null元素。 |—&amp;amp;amp;amp;amp;amp;amp;amp;gt;HashSet(JDK1.2):底层数据结构是哈希表、存取速度快、元素唯一、线程不同步。 保证性元素唯一的原理: 先判断元素的hashCode值是否相同,再判断两元素的equals方法是否为true (往HashSet里面存的自定义元素要复写hashCod

William 303

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 941

数字电路逻辑与设计实验一 门电路逻辑功能及测试

(1)选二输入四异或门电路 74LS86,按图 1-8 接线,输入端 1、2、4、5 接逻辑开 关(S1~S4),输出端 A、B、Y 接电平显示发光二极管.用六反相器(非门)按图 1-11 接线,输入 80KHz 连续脉冲,用双踪示波器测输入, 输出相位差,计算每个门的平均传输延迟时间的 tpd 值。测试不同的输入组合:对门电路进行全面的测试,尝试不同的输入组合,包括各种可能的逻辑状态。检查门电路的输入:确认门电路的输入是否正确,并且输入信号的电平符合门电路的规格要求。确保输入信号的稳定性和准确性。

欢迎交流学习心得 2万+

set集合使用详解

set集合使用详解 “曾经年少爱追梦,一心只想往前飞。”那会高二,刚刚接触c语言,一发不可收拾,还记得当时为了一个想法和朋友一起想到半夜。现在我还是那个少年,那个又菜又爱玩的少年。 咳咳,set集合容器,非常好哈!内部是用二叉搜索树实现的,重点是什么呢,容器内每一个元素呀,它只会出现一次,并且是排好序的,你爱了吗?复杂度更是只有 O(log2n),非常高效呢。 set算是竞赛里面用的比较多的了,因为,很多题目都爱考一些集合什么的。 咳咳,来看看使用方式吧。上表: 写法 说明 set

qq_43514659的博客 1万+

LVGL colorwheel组件教程一(调色板)

【代码】LVGL colorwheel组件教程一(调色板)

摸鱼专家 435

java基础——java集合set详解

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

qq_47980550的博客 4583

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

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

List集合与Set集合

Java中的所有对象,都可以调用Obejct类提供的hashCode方法,返回该对象自己的哈希值。但是,它的每个元素都额外的多了一个双链表的机制记录它前后元素的位置。或者也可能需要进行数组的扩容。用HashSet集合 (无序, 不重复, 无索引) ,底层基于哈希表实现的。1、如果希望记住元素的添加顺序, 需要存储重复的元素, 又要频繁的根据索引查询数据?4.如果希望记住元素的添加顺序, 也没有重复元素需要存储, 且希望增删改查都快?特点:不重复、无索引、可排序(默认升序排序,按照元素的大小,由小到大排序)

2401_87053441的博客 1473

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

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

weixin_44012027的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

List集合与Set集合的区别

List集合与Set集合的区别 List和Set都是Collection集合的子级接口! List是序列的,主要表现为其中的各元素在内存中是存在顺序规则的;另外,List中的元素是可以重复的,即可以向同一个List集合中反复添加相同的数据; Set是散列的,主要表现为其中的各元素在内存中的位置是散列的,如果使用不同的实现类来存储数据,最终在显示Set集合中的所有元素时,显示结果可能是无序的(Has...

weixin_43822829的博客 4030

集合框架:Set集合的特点、HashSet集合的底层原理、哈希表、实现去重复

Set(集合)是一种,它的特点如下:1.:Set 中的元素没有顺序,无法通过索引来访问。2.:Set 中不允许有重复的元素,每个元素在集合中只能出现一次。3.:Set 内部通常是基于哈希表或平衡树等数据结构实现的。4.:因为 Set 中的元素是唯一的,所以可以很方便地用来做去重操作。同时,由于内部实现采用哈希表或树形结构,所以查找某个元素的时间复杂度为 O(1) 或 O(log n)。5.:由于 Set 中的元素是基于哈希表实现的,所以集合中的元素必须是可哈希的,即元素必须有一个明确的哈希值。

Pretty_TokaiTeio的博客 3473

简单介绍Set集合

Set集合是Collection的子接口 该集合中的元素的唯一的! 无序的 HashSet 不能保证元素的迭代顺序恒久不变,底层哈希表(HashMap实例) 无序性:(存储和取出不一致!) 哈希表能够保证元素唯一: 依赖于 public int hashCode() public boolean equals(Object e)) ; HashSet的add方法依赖于HashMap的put方法 依赖于: HashCode() / equals(Object e) import java.ut

CG123820的博客 279

【集合框架Set进阶】

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

weixin_64178283的博客 1883

Kotlin 基础——Set集合详解

Kotlin基础——Set集合详解一、声明和创建二、使用Set的方法三、遍历Set四、可变的Set4.1、添加元素4.2、删除元素 Kotlin的集合类由两个接口派生:Collection和Map。 Kotlin的集合分为两大类:可变集合和不可变集合。只有可变集合才能添加、删除、修改元素,不可变集合只能读取元素。 Kotlin的Collection集合和Set集合的功能基本相同,Set集合只是为C...

一名互联网时代苟且偷生的 Android码农 5841

Python中的set集合

Python set集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算。

m0_75067840的博客 1065

JAVA集合进阶(Set、Map集合)

使用迭代器遍历集合时,可能存在并发修改异常。我们先把这个异常用代码演示出来,再解释一下为什么会有这个异常产生list.add("王麻子");list.add("小李子");list.add("李爱花");list.add("张全蛋");list.add("晓李");list.add("李玉刚");// [王麻子, 小李子, 李爱花, 张全蛋, 晓李, 李玉刚]​//需求:找出集合中带"李"字的姓名,并从集合中删除if(name.contains("李")){

是程序喵呀 1582

List.Set集合的简单应用与方法

List 集合 常用的list集合是ArrayList:一次只能储存一个元素! 1. 在创建这个集合的对象时: 一定要指定这个集合存储的数据类型! 否则这个集合的数据是不安全的。 2. 与数组的区别: ①数组的长度是固定的, 集合的长度是可变的。 ②数组可以存储基本类型和引用数据类型的数据.集合不可...

yjyxw的博客 2977

python set大小_python set集合

Python set集合最后更新于:2020-03-21 12:06:03在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值bool / 列表list / 字典dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合set。一.set集合简介python set集合使用大括号 { }表示,与字典dict不同的是set集合并没有key/value键值对...

weixin_39647977的博客 1818
上一篇: ConcurrentHashMap基于JDK1.8源码剖析
下一篇: 3分钟搞掂Set集合
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值