2 zombie lee Zombie_lee 于 2016.09.25 10:47 提问

求解map集合和set集合的问题
map

set集合中添加两个相同元素,会导致添加操作无效。
map集合中的key不能是重复的,如果重复,那么后面添加的的映射关系会覆盖前面的映射关系,map集合中的key的维护是依靠set集合完成的。
为什么同是set集合,map集合在key重复时是先进去再覆盖,而set集合是添加操作无效,不能进去。

5个回答

bobi0201
bobi0201   2016.09.25 11:36
已采纳

set原则是添加相同元素操作是无效,是因为在做二叉树或哈希算法时,相同元素计算值相同不允许插入,这个可以改的,你在
①hashSet的所需要元素的类重写hashCode方法,和equal方法,而方法里什么也不做返回false,
②在TreeSet中,不管自定义选择器还是重写选择方法,还是一样什么也不做,返回0.
这样set也能插入相同元素了,然后这样Set就失去了元素唯一性了.
其实set就是map集合的键列集合,而**值列都是Object()**,是map集合的特殊表现,map插入key重复时,覆盖的是值(!!!!这个你看清楚,你插入成功的前提是
键一样,**值是不一样**).如果键和值都一样还是无法插入的,这就是如果set插入相同元素,相对于map集合键和值都一样,当然无法插入啊.

lwd791123
lwd791123   2016.09.25 10:58

老兄,这问题有意义吗,Set你添加个一样的东西干嘛

oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.09.25 11:40

使用Set集合就是为了防止添加重复的元素的,不要纠结这个了,人家Jdk就是这样设计的

baidu_32262373
baidu_32262373   2016.09.25 11:54

set集合和map集合的key键的机制还是不一样的,你混淆概念了,源码思路都不一样,只是相近,你想弄懂的话可以参考源码。

qy20115549
qy20115549   2016.09.25 14:35

map里面可以嵌入list或者map作为key。。用嵌入的写法

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
利用Set List Map集合的特点处理重复字符串
empty public class ForString { /* * 清除重复字符,返回字符串 */ public String getString(String str){ Set s = new HashSet(); char[] ch = str.toCharArray(); for (char c : ch) { s.add(c); } S
List集合、Set集合、Map集合
List:1、是线性,有顺序的 2、可以放重复的值 3,元素有下标 ArrayList :实现了List接口,底层利用数组,在增删改时效率较低 (原因是数组在存储 的时候是一块连续的存储单元, 在增删时要对元素进行移动),在查询的时候效率高(原因是利用下标输出)。 LinkedLi
set 集合与 map集合
Set集合是不能放重复的元素,无序。 这是转载别人的 主要介绍HashSet与TreeSet 都知道Set是一个接口,而HashSet与TreeSet实现了Set的接口, /** 为什么不写HashSet set = new HashSet(); 而写Set set = new HashSet(); 这样就只能调用Set接口里面定义好的方法,而不能使用HashSet里的方法, 方
es6-Set集合与Map集合
前言 离回家的时间越来越近了,突然觉得自己很差劲,分享一首歌,道出心声啊 我的博客地址 :http://www.aymfx.cn/ 大概过去的就真的已过去 偶尔想起还有几分怀念气息 遇上快乐遇上心酸遇上分离 生活终究得让人继续 衣身太长遮住大半个身体 学不会平淡幸福无从说起 可到最后 原谅背叛原谅任性 其实该原谅眼里的自己 那年的自己讨厌的自己如今的自己 风一直不...
Java 集合List、Set、Map特性总结
2. Collection   Collection 是最基本的集合接口,一个Collcetion代表一组Object的集合,这些Object被称作Collection的元素。Collection是一个接口,用以提供规范定义。 2-1. List   List集合代表一个元素有序、可以重复的集合,集合中每个元素都有对应的顺序索引。List集合允许加入重复的元素是因为它是通过索引访问指定的集合元素。List元素默
set集合(set特性去除集合中的重复元素)
/** * 类描述:set集合针对String 类型和8大基础数据类型 过滤掉重复数据,如果存放的是其他类型对象,则需要重写hashCode方法和equals方法,当equals 比较相等时,则会去比较hashCode值 hashCode的值 如果一致的话,则不会存进set */ public class SetDemo { public static void main(S
java 中 各种集合(List Set Map) 去除重复项
<br /><br />//各种集合(List  Set  Map) 去除重复项<br />import java.text.CollationKey;<br />import java.text.Collator;<br />import java.util.ArrayList;<br />import java.util.Collection;<br />import java.util.Comparator;<br />import java.util.HashMap;<br />import jav
使用Set集合对List集合进行去重
使用Set集合对List集合进行去重前段时间正好遇到这样一个需求:我们的支付系统从对方系统得到存储明细对象的List集合,存储的明细对象对象的明细类简化为如下TradeDetail类,需求是这样的,我要对称List集合进行去重,这里的去重的意思是只要对象对象中的accountNo账号是相同的,就认为明细对象是相同的,去重之后要求是List集合或者Set集合。在进行上面的需求对象去重之前,先来看很简...
set集合去掉重复数据
1.应用场景:像数据库导入数据,数据库已存在是数据不导入2.解决方案:将数据已存在的数据放入set集合,要导入的数据也放入另一个集合list,遍历list每条数据,获取数据库没有的数据,即为要导入的数据。public static List<Map<String, Object>> isHaveStock(List<Map<String, Object>> oldList, List<Map<Str
简述list,set,map集合
list接口继承了collection,因此包含connection的所有方法 list常用的实现类有Array List和LinkedList ArrayList类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问,但是,它的缺点是向指定的索引位置插入对象或删除对象的速度较慢。 LinkedList类采用链表结构保存对象,这种结构的优点是便于向