9

ハッシュマップを作成しましたが、入力した最初のキーを取得する必要があります。これは私が使用しているコードです:

初め:

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

2番:

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 に答える