我有一本字典在Java中:迭代字典中的Java
protected Dictionary<String, Object> objects;
現在我想要得到的字典的鍵,這樣我可以得到的get()在該鍵的值迴路:
for (final String key : this.objects) {
final Object value = this.objects.get(key);
但這不起作用。 :( 任何想法
THX 托馬斯
PS:我需要在一個變量的關鍵&值都
我有一本字典在Java中:迭代字典中的Java
protected Dictionary<String, Object> objects;
現在我想要得到的字典的鍵,這樣我可以得到的get()在該鍵的值迴路:
for (final String key : this.objects) {
final Object value = this.objects.get(key);
但這不起作用。 :( 任何想法
THX 托馬斯
PS:我需要在一個變量的關鍵&值都
第一件事第一,Dictionary
班的方式已經過時,您應該使用Map
代替:
protected Map<String, Object> objects = new HashMap<String, Object>();
一旦這是固定的,我覺得這是你的意思:
for (String key : objects.keySet()) {
// use the key here
}
如果您打算遍歷鍵和值,這是better做到這一點:
for (Map.Entry<String, Object> entry : objects.entrySet()) {
String key = entry.getKey();
Object val = entry.getValue();
}
他沒有使用'Map'而是'Dictionary' ... http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html#keys%28%29 ...根據他正在做的事情,使用「Map」可能會也可能不會更好,但這是一個重要的區別。 – StormeHawke
@StormeHawke是的,我剛剛意識到這一點。我相應地更新了我的答案 –
但是,如果您使用了很多對象(100,000或更多),Map會退出緩慢 –
你可以得到的值作爲
for(final String key : this.objects.keys()){
final Object value = this.objects.get(key);
}
java.util.Map
是字典equivaivalent和下面是如何迭代通過每個條目的例子
Map<String, Object> map = new HashMap<String, Object>();
//...
for (String key : map.keySet()) {
}
for (Object value : map.values()) {
}
for (Map.Entry<String, Object> entry : map.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
}
如果必須使用字典(例如OSGi的菲利克斯框架ManagedService),那麼下面的作品..
public void updated(Dictionary<String, ?> dictionary)
throws ConfigurationException {
if(dictionary == null) {
System.out.println("dict is null");
} else {
Enumeration<String> e = dictionary.keys();
while(e.hasMoreElements()) {
String k = e.nextElement();
System.out.println(k + ": " + dictionary.get(k));
}
}
}
同樣的問題在以下鏈接回答:HTTP://stackoverflow.com/questions/9371667/foreach-loop-in-java-for-dictionary – vinay
對於初學者,避免使用'Dictionary';這是一個傳統課程。改爲使用'HashMap'。 – chrylis
HashMap和Dictionary之間的性能差異與C#相關,不適用於Java。它們是完全不同的語言,在Java中我們已經使用HashMap超過15年了,推薦使用Dictionary。 Dictionary甚至沒有實現Map接口,它已經過時了。 –