2013-08-11 4 views
7

ハッシュマップを作成しましたが、最初に入力したキーを取得する必要があります。最初にHashMapの最初のものを取得しますか?

まず:

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); 
} 

それはここで私はhasmapから文字列を取得したいGET //言う これは私が使用しているコードです。 ありがとうございます。

答えて

14

HashMapは、キーの挿入順序を管理しません。

LinkedHashMapは、通常、キーがマップに挿入された順序(挿入順序)である予測可能な反復順序を提供するので、使用する必要があります。

MapEntryメソッドを使用して、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の最初の要素が必要な場合、あなたはこれを行うことができます。

最初のLinkedHashMapにはHashMapからあなたの銀行のマップを変更
banks.entrySet().iterator().next(); 
+3

をこれが質問に答えていません。 – Bohemian

+0

@ボヘミアン詳細をつけて答えを更新しました。 –

+0

ええと、あなたは私の答えをコピーしました。あなたができることは、私に信用を与えることです... –

6

タイトルで質問に答える:挿入された最初のキーを取得するには、次の操作を行います。

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()); 
}