相关疑难解决方法(0)

通过Map.put(K,V)添加值时,是否必须通过Map.get(K)返回相同的实例?

假设你有这个代码:

Map<Foo, Bar> map = new HashMap<Foo, Bar>();

Foo foo = new Foo();
Bar bar = new Bar();
map.put(foo, bar);

Bar barReturned = map.get(foo);
Run Code Online (Sandbox Code Playgroud)

Java需要barReturned == bar吗?也就是说,它的Java 需要的是barReturned相同的实例作为bar?如果没有,预计会有什么语义?

Javadoc中表明,barReturned == bar必须是真实的,但我不是100%肯定的是:

V get(Object key)

返回指定键映射到的值,或者null此映射是否不包含键的映射.

更正式地,如果此映射包含从键映射k到一个值v,使得(key==null ? k==null : key.equals(k)),则此方法返回v; 否则它会返回null.(最多可以有一个这样的映射.)

如果此映射允许null值,则返回值null 不一定表示映射不包含键的映射; 地图也可能明确地将密钥映射到null.containsKey操作可用于区分这两种情况.

参数:

key - 要返回其关联值的键

返回:

值来指定键映射 …

java collections map semantics

5
推荐指数
1
解决办法
535
查看次数

标签 统计

collections ×1

java ×1

map ×1

semantics ×1