首先在HashMap中获得第一件事?

Nin*_*ine 7 java hashmap

所以我创建了一个hashmap,但我需要获得我输入的第一个密钥.这是我正在使用的代码:

第一:

public static Map<String, Inventory> banks = new HashMap<String, Inventory>();
Run Code Online (Sandbox Code Playgroud)

第二:

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

在哪里说//获取这里我想从hasmap获取String.感谢帮助.

Jun*_*san 14

HashMap不会管理键的插入顺序.

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

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

public static Map<String, Inventory> banks = new LinkedHashMap<String, Inventory>();
Run Code Online (Sandbox Code Playgroud)

然后简单地迭代它:

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

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

banks.entrySet().iterator().next();
Run Code Online (Sandbox Code Playgroud)

  • 这不回答这个问题. (3认同)

Ósc*_*pez 6

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

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

String firstKey = banks.keySet().iterator().next();
Run Code Online (Sandbox Code Playgroud)

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

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