关于Java:在hashMAP中首先得到的是什么?

Getting first the first thing in HashMap?

本问题已经有最佳答案,请猛点这里访问。

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

第一:

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

第二:

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

上面写着//到这里,我想从hasmap中得到字符串。谢谢你的帮助。


hashmap不管理键的插入顺序。

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

可以使用mapEntry方法在LinkedHashMap上迭代。所以这里是您需要在代码中做的事情。首先,将您的银行地图从hashmap更改为linkedhashmap:

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

然后简单地重复如下:

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

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

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


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

1
2
3
4
public static Map<String, Inventory> banks
    = new LinkedHashMap<String, Inventory>();

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

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

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