robbenv 2016-01-22 15:00 采纳率: 0%
浏览 1703

关于HashMap的KeySet方法的源码问题

初学java,想看看keySet方法到底返回个什么东西,就找源码看了看,其他的都能看懂,就是不明白这个方法第一行的keySet是从哪里来的,注意是小写的k,整个HashMap源文件内我都没找到有keySet这个东西的定义,它怎么能给ks赋值呢,想不明白了。

  public Set<K> keySet() {
        Set<K> ks = keySet;
        return (ks != null ? ks : (keySet = new KeySet()));
    }

    private final class KeySet extends AbstractSet<K> {
        public Iterator<K> iterator() {
            return newKeyIterator();
        }
        public int size() {
            return size;
        }
        public boolean contains(Object o) {
            return containsKey(o);
        }
        public boolean remove(Object o) {
            return HashMap.this.removeEntryForKey(o) != null;
        }
        public void clear() {
            HashMap.this.clear();
        }
    }
  • 写回答

4条回答 默认 最新

  • threenewbee 2016-01-22 15:12
    关注

    keySet应该是一个成员变量,如果不在当前类定义中,就在外覆类、基类中。

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料