Java HashMap中的一个奇怪内部类:KeySet,他是用来存储当前hashmap中的所有key,但大家有没有发现这个内部类比较奇怪,每当用户执行put()操作,key是怎么被加到这个set里的呢?看源代码看不出什么名堂,郁闷!
而且源代码中更奇怪的是,这个KeySet内部类有个private的构造函数,但却找不到对应的代码,怎么回事?我不着这里怎么贴图,所以大家可以打开HashMap.class可以看看。
而且源代码中更奇怪的是,这个KeySet内部类有个private的构造函数,但却找不到对应的代码,怎么回事?我不着这里怎么贴图,所以大家可以打开HashMap.class可以看看。
解决方案 »
- 怎么在swing的组件里显示图片呀!!!!
- jdbc连了半天都没连上
- 菜鸟求助 PKU 1002 runtime error 什么情况啊!!
- 关于JDK版本问题
- 高手请指点江山
- 在一个Java开发的系统中如何处理数据权限?来者有分。。。。。。。。。。。。。。。。。
- 如何让swing中的JOptionDialog弹出的对话框显示的是YES 而不是“确定”
- 到底在什么情况下必须在方法里面书写 this ?,书写this的目的是什么?谢谢!
- SWING真难,有什么好书?电子书最好。
- 新人求指导下
- Arrays.sort(arryOfInts);急用
- 报着希望,看有人回答没,100分,顶者都有分吧 看以下程序,如何实现2个框架的通信?
首先,这个private构造函数哪来的?为什么我写得private inner class就没有这种构造函数?
其次,这个KeySet的数据到底是怎么变动的?有谁能说说细节?
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();
}
}
你可以看HashMap的源代码啊。构造函数你可以自己声明啊,inner class中有private的构造函数也没有问题啊
我已经说了KeySet中根本没有数据存储,你调用它的方法时,实际上调用的是HashMap中的方法