小编Fre*_*ddy的帖子

HashMap 中的 keySet() 方法可能更简洁

Mac OS 上的 JDK 8,查看 HashMap.java 中的以下代码:

    public Set<K> keySet() {
        Set<K> ks = keySet;
        if (ks == null) {
            ks = new KeySet();
            keySet = ks;
        }
        return ks;
    }
Run Code Online (Sandbox Code Playgroud)

对返回的 ks 的任何更改都将反映在 keySet 中,因为它们始终指向相同的底层集合,如果这是真的,可以写成:

    public Set<K> keySet() {
        if (keySet == null) {
            keySet = new KeySet();
        }
        return keySet;
    }
Run Code Online (Sandbox Code Playgroud)

两个代码片段的行为是否相同?

如果是这样,为什么HashMap使用第一个变体而不是第二个变体?

java hashmap keyset java-8

6
推荐指数
1
解决办法
132
查看次数

标签 统计

hashmap ×1

java ×1

java-8 ×1

keyset ×1