java 集合set类中是如何实现数据不能重复的?

 我来答
林仔Z10
2019-09-01 · TA获得超过1378个赞
知道小有建树答主
回答量:1022
采纳率:0%
帮助的人:302万
展开全部

Set 有个 add 方法是将元素添加到 Set 中,以 HashSet 为例。

public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}

可以看到,HashSet 底层的数据结构是一个HashMap<E,Object> ,将 e 作为 HashMap 的 key 保存的。而 HashMap 的底层数据结构是 HashTable ,根据 HashMap 的 key 的HashCode 去 HashTable (具体实现是数组+链表) 里找到元素的位置。如果同一个对象(使用equals 来比较两个对象是否相同,具体是比较对象的 hashCode() 是否相同) 往Set 里放,最终放到 HashTable 的位置是相同的。具体判断Set 是否包含某个对象,调用的是Set的contains(Object o) 方法,它内部也是通过计算 o 的hashCode 去查找该元素是否存在的。

如果题主是新学习Java的同学,建议重点学习一下常用集合的数据结构,对于掌握Java这门语言非常有帮助。

li_yan_cai
2011-09-21 · TA获得超过179个赞
知道答主
回答量:110
采纳率:0%
帮助的人:65.2万
展开全部
set可以过滤在其他集合中的元素,从而得到一个不重复的集合。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hongsedigua
2011-09-21
知道答主
回答量:41
采纳率:0%
帮助的人:13.3万
展开全部
set 接口得到的就是不重复的数据,如果你插入了相同的会抛出异常的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
toto71229
2011-09-21 · TA获得超过808个赞
知道小有建树答主
回答量:513
采纳率:0%
帮助的人:469万
展开全部
用Set的contains方法判断就可以了 你试试~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lwllovewf2010
推荐于2017-10-31 · TA获得超过135个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:198万
展开全部
通过计算HashCode实现的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式