Java HashMap中的一个奇怪内部类:KeySet,他是用来存储当前hashmap中的所有key,但大家有没有发现这个内部类比较奇怪,每当用户执行put()操作,key是怎么被加到这个set里的呢?看源代码看不出什么名堂,郁闷!
而且源代码中更奇怪的是,这个KeySet内部类有个private的构造函数,但却找不到对应的代码,怎么回事?我不着这里怎么贴图,所以大家可以打开HashMap.class可以看看。
而且源代码中更奇怪的是,这个KeySet内部类有个private的构造函数,但却找不到对应的代码,怎么回事?我不着这里怎么贴图,所以大家可以打开HashMap.class可以看看。
解决方案 »
- 一道简单的java题
- 一个类继承另一个类后,仅仅是构造函数里有一个 super(); 这与 super( parameter );有什么区别?谢谢。
- 大家快来这里呀这里有好多JAVA视频下载
- java中取子字符串的函数是什么呀?
- 超简单?非程序问题
- java操作SQL数据库,为什么有时没反应
- 关于Runtime中exec方法使用的一个问题
- 请教一个Java的导包错误原因.
- 各为兄弟,小弟落伍,不知哪有jbuilder 6 企业版下载,兄弟们帮忙!!!
- 如何配置Java运行环境?
- 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中的方法