当前位置: 代码迷 >> J2SE >> HashMap里的keySet()方法原码看不懂,请解释一下。多谢
  详细解决方案

HashMap里的keySet()方法原码看不懂,请解释一下。多谢

热度:35   发布时间:2016-04-24 01:06:12.0
HashMap里的keySet()方法原码看不懂,请解释一下。谢谢。
Java code
    public Set<K> keySet() {        Set<K> ks = keySet;             [color=#0000FF]//这个keySet是什么? 没有定义啊?[/color]        return (ks != null ? ks : (keySet = new KeySet()));    }

keySet 与方法名相同,在整个HashMap里别处没有定义。

------解决方案--------------------
父类AbstractMap
Java code
public Set<K> keySet() {    if (keySet == null) {        keySet = new AbstractSet<K>() {        public Iterator<K> iterator() {            return new Iterator<K>() {            private Iterator<Entry<K,V>> i = entrySet().iterator();            public boolean hasNext() {                return i.hasNext();            }            public K next() {                return i.next().getKey();            }            public void remove() {                i.remove();            }                    };        }        public int size() {            return AbstractMap.this.size();        }        public boolean contains(Object k) {            return AbstractMap.this.containsKey(k);        }        };    }    return keySet;    }
------解决方案--------------------
一定是存在的变量了啦,好好找找。
  相关解决方案