问答详情
源自:5-3 学生选课---删除 Map 中的学生

Map中存放的数据能直接修改吗

Map中存放的数据能直接修改吗,我看API中貌似Map接口中没有提供这个方法呀

提问者:飞行烤鸭 2017-01-09 12:21

个回答

  • 慕粉2223061884
    2017-01-09 14:03:03
    已采纳

    不能,Map存放的是key-value的映射关系,并且多个key值可以对应到同一个value。

    如果你想对value直接修改会导致其他key指向的这个value都被改变,而违背了"Map只是存放key-value之间映射"的初衷,所以Map接口不会提供这样的接口;而通过remove,再put操作实质上是将原来的key对value的映射指向映射到新的value值的关系。

  • 不是咸鱼
    2017-01-09 14:03:39

    方法摘要

     void    clear()
              从此映射中移除所有映射关系(可选操作)。    

     boolean    containsKey(Object key)
              如果此映射包含指定键的映射关系,则返回 true。    

     boolean    containsValue(Object value)
              如果此映射将一个或多个键映射到指定值,则返回 true。    

     Set<Map.Entry<K,V>>    entrySet()
              返回此映射中包含的映射关系的 Set 视图。    

     boolean    equals(Object o)
              比较指定的对象与此映射是否相等。    

     V    get(Object key)
              返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。    

     int    hashCode()
              返回此映射的哈希码值。    

     boolean    isEmpty()
              如果此映射未包含键-值映射关系,则返回 true。    

     Set<K>    keySet()
              返回此映射中包含的键的 Set 视图。    

     V    put(K key, V value)
              将指定的值与此映射中的指定键关联(可选操作)。    

     void    putAll(Map<? extends K,? extends V> m)
              从指定映射中将所有映射关系复制到此映射中(可选操作)。    

     V    remove(Object key)
              如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。    

     int    size()
              返回此映射中的键-值映射关系数。    

     Collection<V>    values()
              返回此映射中包含的值的 Collection 视图。