我看了源代码,发现hashmap的keyset()方法调用了一个内部类,按正常逻辑应该返回空的呀,为什么会有值呢?

解决方案 »

  1.   


    Set<String> set=map.keySet();//set为HasMap内部类KeySet
    Iterator<String> it=set.iterator();//it为HashMap内部类KeyIterator打印每一个Key用的是KeyIterator 的父类HashIterator的nextNode()方法
      

  2.   

    是否理解为是toString()的原因呢?但是我调试代码发现如下:我把值返回给set,为什么查看的时候set也有值呢?不是应该只有到最后println的时候才会有值吗?请指教
      

  3.   

    keyset 方法返回的是该map中的所有键形成的set集合。可通过Iterator迭代来实现对map的遍历
      

  4.   

    Set set = m.keySet();这里运行之后就已经把值保存在set里面了
      

  5.   

    我说的是源代码,不是API呢
      

  6.   

    只看到你贴了ketset的源码,没看到hashmap的