sol*_*oth 14 java iterator linkedhashmap
通过查看Sun的LinkedHashMaps的源代码,我看到有一个名为KeyIterator的私有类,我想使用它.我怎样才能获得访问权限?
Mic*_*ers 45
你通过电话得到它
myMap.keySet().iterator();
Run Code Online (Sandbox Code Playgroud)
你甚至不需要知道它存在; 它只是实现的一个工件.如你所知,他们可能正在使用飞猴来重复密钥; 只要它们按照规范进行迭代,它们如何做就没有关系.
顺便说一句,你可知道,HashMap有一个叫做私有类KeyIterator(如做ConcurrentHashMap,ConcurrentSkipListMap,EnumMap,IdentityHashMap,TreeMap,和WeakHashMap)?
这会对你如何迭代一个键有所不同HashMap吗?
编辑:在效应初探您的意见,要知道,如果你想遍历所有键值对的Map,还有比遍历键和调用一个更好的方式get为每个.该entrySet()方法获取Set所有键值对,然后您可以迭代.所以不要写:
for (Key key : myMap.keySet()) {
Value val = myMap.get(key);
...
}
Run Code Online (Sandbox Code Playgroud)
你应该写:
for (Map.Entry<Key, Value> entry : myMap.entrySet()) {
doSomethingWithKey(entry.getKey());
doSomethingWithValue(entry.getValue());
...
}
Run Code Online (Sandbox Code Playgroud)
如果需要,您还可以迭代值values().
请注意,因为keySet,entrySet和values,在Map界面中定义,它们将适用于任何Map,而不仅仅是LinkedHashMap.
| 归档时间: |
|
| 查看次数: |
29035 次 |
| 最近记录: |