【问题标题】:Getting first the first thing in HashMap? [duplicate]在 HashMap 中获得第一件事? [复制]
【发布时间】:2013-08-12 15:08:26
【问题描述】:

所以我创建了一个哈希图,但我需要获取我输入的第一个键。 这是我正在使用的代码:

第一:

public static Map<String, Inventory> banks = new HashMap<String, Inventory>();

第二:

for(int i = 0; i < banks.size(); i++) {
    InventoryManager.saveToYaml(banks.get(i), size, //GET HERE);
}

上面写着 //GET HERE 我想从 hasmap 中获取字符串。 感谢您的帮助。

【问题讨论】:

    标签: java hashmap


    【解决方案1】:

    HashMap 不保持插入键的顺序。

    应该使用LinkedHashMap,因为它提供了可预测的迭代顺序,这通常是键插入映射的顺序(插入顺序)。

    您可以使用 MapEntry 方法来迭代您的 LinkedHashMap。因此,这是您需要在代码中执行的操作。首先将您的银行地图从 HashMap 更改为 LinkedHashMap:

    public static Map<String, Inventory> banks = new LinkedHashMap<String, Inventory>();
    

    然后像这样简单地迭代它:

    for (Map.Entry<String, Inventory> entry : banks.entrySet()) {
        InventoryManager.saveToYaml(entry.getValue(), size, entry.getKey());
    }
    

    如果您只需要 LinkedHashMap 的第一个元素,那么您可以这样做:

    banks.entrySet().iterator().next();
    

    【讨论】:

    • 这没有回答问题。
    • @Bohemian 用更多细节更新了答案。
    • 嗯,你刚刚复制了我的答案。至少你能做的就是给我信用......
    • @ÓscarLópez 它没有被复制,而是使用与提问者代码中相同的语法和相同的变量名。但是你仍然应该发现一些不同之处。你已经有我的投票了:-)
    【解决方案2】:

    回答标题中的问题:要获取插入的第一个密钥,请执行以下操作:

    public static Map<String, Inventory> banks
        = new LinkedHashMap<String, Inventory>();
    
    String firstKey = banks.keySet().iterator().next();
    

    请注意,您必须使用 LinkedHashMap 在遍历地图时保留相同的插入顺序。要按顺序遍历每个键,从第一个开始,执行此操作(我相信这就是您的意图):

    for (Map.Entry<String, Inventory> entry : banks.entrySet()) {
        InventoryManager.saveToYaml(entry.getValue(), size, entry.getKey());
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-18
      • 2014-12-01
      • 1970-01-01
      • 2017-12-24
      • 2021-11-21
      • 2023-03-29
      • 2012-04-22
      • 1970-01-01
      • 2011-03-20
      相关资源
      最近更新 更多