gpt4 book ai didi

java - 在 Java 中迭代哈希表(谜题)

转载 作者:行者123 更新时间:2023-12-02 06:45:22 27 4
gpt4 key购买 nike

所以这是一个难题:

“kb”是扩展 java.util.Hashtable 的类的实例键是一个字符串,存储的值是一个名为“IntelCard”的类

此代码提取 key ,并尝试从表中打印数据

    Set<String> ks = kb.keySet();
System.out.println(ks); // is this what we thought?
for(String key: ks){
IntelCard ic = kb.get(key);
String o = String.format("%-24s %24s %8s",
ic.name, ic.alliance, ic.might);
System.out.println(o);
}

这是输出:

[commanderv, repo, olaf, triguy]
triguy galactica 10000
triguy galactica 10000
triguy galactica 10000
triguy galactica 10000

我们可以看到“ks”的转储,它应该是一组键。但显然它只选择哈希表中最后一个“触及”的条目。 (在此测试中,“triguy”是最后一个添加的值。)

是否需要以某种方式重置哈希表选择器?这是没有意义的,因为代码通过键选择每个值。是否需要重置按键组 (ks) 上的选择器?这也没有意义,因为循环应该简单地迭代整个集合。

我不知道,我错过了什么?

---v

最佳答案

可能你也有同样的IntelCard与多个键关联的对象;为了确保您正在迭代所有键,请使用 String.format(key, ic.alliance, ic.might) 格式化字符串.
使用 Map.Entry<K,V> 迭代 map 而不是使用keySet()/get()对:

for(final Map.Entry<String,IntelCard> e : kb.entrySet()) {
IntelCard ic = e.getValue();
String o = String.format("%-24s %24s %8s", ic.name, ic.alliance, ic.might);
System.out.println(o);
}

关于java - 在 Java 中迭代哈希表(谜题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18692354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com