A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沙漠里的小鱼 黑马帝   /  2014-3-18 23:57  /  10953 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

map 集合的的key值必须保证唯一吗  

10 个回复

倒序浏览

回帖奖励 +1

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集合中的键进行排序
回复 使用道具 举报

回帖奖励 +1

楼上很专业
回复 使用道具 举报

回帖奖励 +1

key是唯一的
Map map = new HashMap();
map.put("acb",1);
map.put("acb",2);
最终存入map中的是acb=2
而保证key唯一性的方法:
HashMap是哈希值和equals方法
TreeMap则是对象自身的比较方法
回复 使用道具 举报

回帖奖励 +1

本帖最后由 duanyoujiji 于 2014-3-19 00:42 编辑

是 一 一对应。但是可以实现一个键值对应多个值的效果,比如多个值先存入list中,然后这个list作为值存入对应的key中这样通过map的key可以获得list,然后这个list就有多个值了然后取出来用。
回复 使用道具 举报

回帖奖励 +1

key必须唯一,值可以一样,后面的会对前面的覆盖
回复 使用道具 举报
目标 中级黑马 2014-3-19 00:41:40
7#
是一对一关系,映射关系
回复 使用道具 举报
枫露 中级黑马 2014-3-19 00:43:00
8#
接口 Map<K,V>
key是唯一的,一个key对应一个value
回复 使用道具 举报
王竞 中级黑马 2014-3-19 00:54:31
9#
map集合时通过键值对的方式来存放的数据,而我们取出其中的数据一般都是通过键去取这个值的,我们想一下,如果key的值不唯一的话,那么我们通过这个键去取值,计算机不是要疯了吗?到底该把那个值给你,所以key的值必须的唯一
回复 使用道具 举报
如果是同一个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());
  }
  
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
Map集合: 该集合存储键值对,一对一对往里存,而且保证键的唯一性。
子类对象:
Hashtable:底层是哈希表结构,不可以存入null键和null值,线程同步。
HashMap:底层是哈希表结构,可以存入null键和null值,线程不同步。
TreeMap:底层是二叉树结构,线程不同步。可以用于给May集合中的键进行排序
Map集合没实现iterator接口 所以使用keySet  entrySet
迭代
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马