【问题标题】:Iterate over Hashtable<Integer, Object> in java [closed]在java中迭代Hashtable<Integer, Object> [关闭]
【发布时间】: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

标签: java hashtable


【解决方案1】:

首先,确保您可以访问 Foo 的成员。在每个成员上定义一个公共 getter:

public Foo(int id, String client, String contents) {
    this.id = id;
    this.client = client;
    this.contents = contents;
}

public int getId() {
    return this.id;
}

public String getClient() {
    return this.client;
}

public String getContents() {
    return this.contents;
}

然后像你想要的那样在你的 while 循环中表示它:

while(keys.hasMoreElements()) {
    String key = keys.nextElement();
    Foo value = hashable.get(key);

    System.out.println(value.getId + "    "  + value.getClient + "    "  + value.getContents);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-11
    • 2011-01-22
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多