【问题标题】:Returning value of a HashMapHashMap 的返回值
【发布时间】:2015-03-18 19:23:14
【问题描述】:

所以我已经能够成功地将对象放入我的哈希映射中,但是我无法返回一个对象。当我在同一个项目中使用 arrayList 时,我只是用以下方法显示它:

public void displayDetails(int currentItem) {   
    accountIDTextField.setText(table.get(currentItem).getAccountID()+"");
    accountNumberTextField.setText(table.get(currentItem).getAccountNumber());
    surnameTextField.setText(table.get(currentItem).getSurname());
    accountTypeTextField.setText(table.get(currentItem).getAccountType());
}

然后按“第一个”按钮将转到列表中的数字 1。

first.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            currentItem = 1;
            displayDetails(currentItem);            
        }
    });

至于我的散列,我使用 accountNumber 作为键,(使用 % 模函数散列)

反过来,当我将 accountNumber 作为参数传入 get() 方法时,我可以得到 accountID。

hashMap.get(12345678).getAccountID();

但是如果我只想获取存储在哈希映射中的第一个对象(即在不知道 accountNumber 的情况下获取 accountID),我该如何返回 accountID?

(AccountID是特定账户唯一的整数,在创建新账户记录时会自动生成)

很抱歉,如果这不是很好的措辞,我仍在努力了解 Java 和 OOP。任何帮助将不胜感激。谢谢

【问题讨论】:

  • 我很想知道您是否需要帐号和帐号 ID?

标签: java hash hashmap hashtable


【解决方案1】:

希望我理解正确。仅获取 HashMap 的第一项将类似于:

Map<String, String> myhashmap = new HashMap<String, String>();
myhashmap.entrySet().iterator().next();

【讨论】:

  • 只是指出这将产生一个类型为原始类型的警告,但这对于像这样的小任务来说从来都不是问题。
  • 谢谢,那会返回 HashMap 中的第二项吗?我最终需要添加“下一个”、“上一个”和“最后一个”按钮。这不能以同样的方式完成,不是吗?
【解决方案2】:

您可以使用 Map.values() 获取 Map 的内容。 我不会根据它在地图中的顺序访问该值,因为不能保证顺序。你应该给每个人一个定义的数字。然后你可以像这样访问它们:

Object o = map.values().get(id);

获得第一名:

Object o = map.values().get(0);

【讨论】:

  • 您可能不知道第一个元素的 id。 @TwelveDollar 的回答展示了如何在不知道任何键(第一个元素)的情况下获得它。
猜你喜欢
  • 2013-04-04
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 2015-03-07
  • 2021-04-11
  • 2016-02-05
  • 2017-09-10
相关资源
最近更新 更多