地图实施的合同(或为此,任何集合)是否需要存储密钥或值的参考


void otherfunc() {
    Map<Key, Value> map = new MyMap<>();
    myfunc(map);
}
void myfunc(Map<Key, Value> map) {
    Key k = someKey;
    Value v = someValue;
    map.put(k, v);
}

mymap是否需要从呼叫者角度将这些参考保留到k和v完整?

HashMap将存储您在其中 put的键和值。您可以使用keySet()获取所有键。

team1.put("foo", 1);
team1.put("bar", 2);

将使用键"foo"2使用键"bar"存储1。迭代所有键:

for ( String key : team1.keySet() ) {
    System.out.println( key );
}

将打印"foo""bar"

for ( String key : team1.keySet() ) {
    System.out.println( team1.get(key) );
}

将打印12

映射接口没有任何 put的k-v映射,通常可用于get(或在values等列表中找到),在任何给定的将来的时间)。例如,您可以使用仍然是有效的Map的内部收割机线程实现到期的缓存。(Javadoc'dk jdk自己的弱hashmap的人也宣称这种行为是"令人惊讶的",但不是无效的。)

最新更新