黑马程序员技术交流社区
标题:
map 集合的的key值必须唯一吗
[打印本页]
作者:
沙漠里的小鱼
时间:
2014-3-18 23:57
标题:
map 集合的的key值必须唯一吗
map 集合的的key值必须保证唯一吗
作者:
mohuancaizi
时间:
2014-3-19 00:26
Map集合的特点:
1,Map 集合是一个双列集合,Collectionshi 单列集合。
2,Map 一次存一对元素,通过键值对的形式,键和值有对应关系。Colletion是一次存一个元素。
3,Map集合必须要保证集合中键的唯一性。不保证元素的唯一性获取就会出问题。
(Collection 是单身汉,Map是一对夫妻。)
Map 相关的其他小知识
Map集合没有迭代器。
迭代器是Collection集合具备的。
Map集合的去处元素的原理:
就是将Map集合先转成Set集合,再进行迭代。
Map的子类对象:
--Hashtable:底层是哈希表数据结构,是同步的。不允许null作为键,null作为值
-Properties:用于配置文件的定义和操作,使用频率非常高,同时键和值都是字符串。
是集合中可以和IO技术向结合的对象。
--HashMap:底层也是哈希表数据结构,是不同步的。允许null,null作为值。替代了Hashtable。
-LinkedHashMap:次子类提供了以个可以让存储的数据有序。
--TreeMap:可以用来对Map集合中的键进行排序
作者:
焚雨成灰
时间:
2014-3-19 00:32
楼上很专业
作者:
方青木
时间:
2014-3-19 00:33
key是唯一的
Map map = new HashMap();
map.put("acb",1);
map.put("acb",2);
最终存入map中的是acb=2
而保证key唯一性的方法:
HashMap是哈希值和equals方法
TreeMap则是对象自身的比较方法
作者:
duanyoujiji
时间:
2014-3-19 00:37
本帖最后由 duanyoujiji 于 2014-3-19 00:42 编辑
是 一 一对应。
但是可以实现一个键值对应多个值的效果,
比如多个值先存入list中,然后这个list作为值存入对应的key中
这样通过map的key可以获得list,然后这个list就有多个值了然后取出来用。
作者:
darkpiece
时间:
2014-3-19 00:41
key必须唯一,值可以一样,后面的会对前面的覆盖
作者:
目标
时间:
2014-3-19 00:41
是一对一关系,映射关系
作者:
枫露
时间:
2014-3-19 00:43
接口 Map<K,V>
key是唯一的,一个key对应一个value
作者:
王竞
时间:
2014-3-19 00:54
map集合时通过键值对的方式来存放的数据,而我们取出其中的数据一般都是通过键去取这个值的,我们想一下,如果key的值不唯一的话,那么我们通过这个键去取值,计算机不是要疯了吗?到底该把那个值给你,所以key的值必须的唯一
作者:
刘先斌
时间:
2014-3-19 12:53
如果是同一个MAP的话,其实在堆上只有一个value,在栈上的不同key存的是相同的地址(即都是指向同一个value)你运行下一下代码 看看 打印的HashCode是不是一样的嘛:
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("北京","中国");
map.put("上海","中国");
map.put("四川","中国");
map.put("重庆","中国");
for(String str : map.keySet()){
System.out.println("value:" + map.get(str) + "--HashCode:" + map.get(str).hashCode());
}
}
作者:
透过生活
时间:
2014-3-19 12:53
Map集合: 该集合存储键值对,一对一对往里存,而且保证键的唯一性。
子类对象:
Hashtable:底层是哈希表结构,不可以存入null键和null值,线程同步。
HashMap:底层是哈希表结构,可以存入null键和null值,线程不同步。
TreeMap:底层是二叉树结构,线程不同步。可以用于给May集合中的键进行排序
Map集合没实现iterator接口 所以使用keySet entrySet
迭代
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2