1

重複の可能性:
順序付きマップの実装

次のようにハッシュマップを使用して値を保存しています-

 Map<String,String>         propertyMap=new HashMap<String,String>();


 propertyMap.put("Document Type", dataobject.get("dDocType"));
 propertyMap.put("Document Title", dataobject.get("dDocTitle"));
 propertyMap.put("Revision Label", dataobject.get("dRevLabel"));
 propertyMap.put("Security Group", dataobject.get("dSecurityGroup"));

その後、リストでハッシュマップのキーと値を取得しています

 documentProperties = new ArrayList(propertyMap.entrySet());

しかし、リストを反復処理すると、キーと値がマップに入れられた順序で取得されません..

とにかく、私がそれをマップに入れている順序で値を取得できる方法はありますか? ありがとう

4

4 に答える 4

2

あなたが探しているのは だと思いますLinkedHashMap

この連結リストは反復順序を定義します。これは通常、キーがマップに挿入された順序 ( insert-order ) です。

なぜ、なぜ別の必要があるのArrayListですか?直接繰り返すことができますMap.entrySet

for (final Map.Entry<String, String> entry : propertyMap.entrySet()) {
  ...
}
于 2012-08-17T05:42:47.090 に答える
0

LinkedHashMapを使用する必要があります。詳細については、マイケルによるこの質問と回答を確認してください。

于 2012-08-17T05:43:18.597 に答える
0

これを試して..

for(Map.Entry<String, String> m : map.entrySet()){


       // Use m.getKey() to get the Key.
       // Use m.getValue() to get the Value.
}
于 2012-08-17T05:59:17.523 に答える
0

propertyMap.entrySet()として結果が得られSetます。Set順不同です。

new ArrayList(propertyMap.entrySet());Set にある順序でリストを作成します (マップに入れている順序ではない場合があります)。

オーダー マップを探している場合は、LinkedHashMapを使用できます。

このトピックに関する興味深い議論があります。

于 2012-08-17T05:40:20.733 に答える