【发布时间】:2021-07-12 16:16:56
【问题描述】:
在我的一堂课中,我有这样的事情:
public Foo(int id, String client, String contents) {
this.id = id;
this.client = client;
this.contents = contents;
}
public String toString() {
return id + contents + client;
}
我在 Java API HashTable 中使用 id 号作为键,并使用对象 Foo 作为值。 在我的下一堂课中,我想打印我所有的键和值,所以我尝试了
Hashtable<Integer, Object> hashtable = new Hashtable<>();
Enumeration<Integer> keys = hashtable.keys();
Collection<Object> values = hashtable.values();
while(keys.hasMoreElements() ){
System.out.printf("%-5d%-5s", keys.nextElement(), values.toString());
}
现在,这并没有达到我想要的效果。我希望我的价值观像这样均匀分布:
ID #1 ID #1 client #1 content #1
ID #2 ID #2 client #2 content #2
ID #3 ID #3 client #3 content #3
我无法在我的 toString 类中修复它,因为那里的值不会均匀分布,还因为我在程序的其他地方使用了 Foo 的特定表示。
【问题讨论】:
-
您的问题真的是关于如何迭代或如何格式化结果。 (不要说“两者” ...因为这会使您的问题“过于宽泛”!)一旦您确定了哪个,EDIT 的问题就可以明确您真正要问的是什么。 (例如,如果这是关于格式的,那么问题标题就会产生误导。)
-
您的问题似乎与格式化(而不是迭代)有关。 stackoverflow.com/questions/6431933/… 和 stackoverflow.com/questions/22416578/… 可能重复。
-
提示:搜索时,重要的是要搜索正确的内容。如果您的问题是格式化但您搜索“如何迭代哈希表”,那么您将获得关于...迭代而不是格式化的问答。
-
与你的问题无关,但
Hashtable被认为是过时的,通常最好使用HashMap。