社区
Java SE
帖子详情
set集合
rem_16_0312
2017-03-31 10:47:10
set集合中的元素为什么不能重复?
...全文
192
6
打赏
收藏
set集合
set集合中的元素为什么不能重复?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
取名好难
2017-04-01
打赏
举报
回复
list 和 set ,前者是类似与引用指向对象(数组和链表的实现),至于对象是否重复没有关系,我的引用不同就可以了,是可以区分集合的每一条数据的;后者存储的数据类似(key:value),value表示set集合的每一个元素的值,key是通过hash算法生成的,打个比方 String key = hash(value); 假如value相同,那么生成的key也相同,如何区分这两组数据?所以设计者设计set集的时候规定了每个元素的不同。
Glavo
2017-04-01
打赏
举报
回复
因为Set的需求就是不能重复,所以会设计成这样。HashSet也不是唯一的实现,譬如TreeSet内部不使用Hash,而是维护着一个RBT来保存数据
码上行动_Light
2017-04-01
打赏
举报
回复
HashSet 内部的数据结构是 HashMap, 而Map的数据结构是 (key ,value)对,其中key是使用hashCode计算和equals两个算法去确保唯一的(这两个算法到底如何确保唯一你要去看jdk源码了,因为我看过,我发现很难简单的给人讲明白,只能自己去看,自己去算),回到Set, HashSet 内的数据结构就是一个 value值都一样的HashMap,说白了——这里只用了key,key的集合就是set本身了。 其实说这么多,有装逼嫌疑,如果真想弄明白,还是去看源码吧。
李德胜1995
2017-03-31
打赏
举报
回复
set的add方法使用的是HashMap的put方法。。先使用hashCode比较,再用equals比较。。。可以去看一下HashMap的代码
rem_16_0312
2017-03-31
打赏
举报
回复
我刚刚搜到说:set集合中,会根据对象的hashcode去重
爪哇学渣
2017-03-31
打赏
举报
回复
这个问题太有深度了,jdk设定的时候就是有这样的特性
Set
集合
与List
集合
的区别
相同部分: List 与
Set
具有相似性,它们都是单列元素的
集合
,所以,它们有一个功共同的父接口,叫 Collection。 区别: 1:**
Set
里面不允许有重复的元素,所谓重复,即不能有两个相等(注意,不是仅仅是相同)的对象,**即假设
Set
集合
中有了一个 A 对象,现在我要向
Set
集合
再存入一个 B 对象,但 B 对象与 A 对象 equals 相等,则 B 对象存储不进去,所...
addAll方法——向
Set
集合
添加另一个
集合
的所有内容
addAll方法用来向
Set
集合
添加另一个
集合
对象所包含的所有内容。 语法 boolean addAll(Collection<? extends E> c) 返回值:如果
Set
集合
发生更改,则返回true。 参数:c是要添加到
Set
集合
中的另一个
集合
对象。 示例 本示例创建一个
Set
集合
,为该
集合
添加一些对象,然后再创建第二个
Set
集合
,同样添加一些对象,最后调用addAll方法...
Set
集合
的概述,
Set
集合
的无序性与不可重复性的理解
Set
集合
是Collection
集合
的子接口,
Set
集合
不允许包含相同的元素,如果尝试把两个相同的元素存入同一个
Set
集合
中,则添加失败,
Set
集合
判断两个对象是否相同,不是使用==运算符,而是根据equals()方法进行比较。 Hash
Set
作为
Set
集合
的主要实现类,线程不安全,可以存储null值。 LinkedHash
Set
作为Hash
Set
的子类,遍历其内部数据时,可以按照添加的顺序遍历。 Tree
Set
可根据添加对象的指定属性进行排序。 ...
Java
Set
集合
的详解
一,
Set
Set
:注重独一无二的性质,该体系
集合
可以知道某物是否已近存在于
集合
中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。 对象的相等性 引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashCode会返回每个对象特有的序号(j
php class
set
,
set
集合
类型
3、
set
集合
类型简介
set
集合
和list列表十分的相似,都可以存储多个字符串。但是list列表可以存储重复值,而
set
集合
中不可重复。
集合
结构其中的user为键名,其可以包含多个 不重复 的元素,各不相同["user":["yanying1","yanying2","yanying3"]]操作方法演示(命令行 + PHP演示)命令行:添加一个元素到
集合
,返回 1代表插入成功;0元素代表已经存在s...
Java SE
62,625
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章