9

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

第一的:

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 中获取字符串。感谢帮助。

4

2 回答 2

15

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();
于 2013-08-11T01:06:34.373 回答
6

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

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

String firstKey = banks.keySet().iterator().next();

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

for (Map.Entry<String, Inventory> entry : banks.entrySet()) {
    InventoryManager.saveToYaml(entry.getValue(), size, entry.getKey());
}
于 2013-08-11T01:12:48.290 回答