hashmap的keyset方法为什么不是空?

小个子程序员2 2017-08-17 09:52:50
我看了源代码,发现hashmap的keyset()方法调用了一个内部类,按正常逻辑应该返回空的呀,为什么会有值呢?
...全文
526 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhk 2017-09-11
  • 打赏
  • 举报
回复
只看到你贴了ketset的源码,没看到hashmap的
  • 打赏
  • 举报
回复
都没人了吗!!
  • 打赏
  • 举报
回复
引用 3 楼 qq_37027248 的回复:
keyset 方法返回的是该map中的所有键形成的set集合。可通过Iterator迭代来实现对map的遍历
我说的是源代码,不是API呢
  • 打赏
  • 举报
回复
引用 4 楼 yuxiangaaaaa 的回复:
Set set = m.keySet();这里运行之后就已经把值保存在set里面了
可是从源代码上看并不是这么回事
自由自在_Yu 2017-08-18
  • 打赏
  • 举报
回复
Set set = m.keySet();这里运行之后就已经把值保存在set里面了
qq_37027248 2017-08-18
  • 打赏
  • 举报
回复
keyset 方法返回的是该map中的所有键形成的set集合。可通过Iterator迭代来实现对map的遍历
  • 打赏
  • 举报
回复
引用 1 楼 pany1209 的回复:

Set<String> set=map.keySet();//set为HasMap内部类KeySet
Iterator<String> it=set.iterator();//it为HashMap内部类KeyIterator



打印每一个Key用的是KeyIterator 的父类HashIterator的nextNode()方法

是否理解为是toString()的原因呢?但是我调试代码发现如下:

我把值返回给set,为什么查看的时候set也有值呢?不是应该只有到最后println的时候才会有值吗?请指教
李德胜1995 2017-08-17
  • 打赏
  • 举报
回复

Set<String> set=map.keySet();//set为HasMap内部类KeySet
Iterator<String> it=set.iterator();//it为HashMap内部类KeyIterator



打印每一个Key用的是KeyIterator 的父类HashIterator的nextNode()方法

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧