キーと値のペアをハッシュテーブル(またはその他のコレクション)に追加したいのですが、挿入順序を維持する必要があります。これどうやってするの?
キーとして「1」を値として、「2」をキーとして、「2」を値として追加します。
出力は次のようになります。
1:one
2:two
重要な Map
実装の特徴的な違いは次のとおりです。
LinkedHashMap
: "予測可能な反復順序を使用[...]これは通常、キーがマップに挿入された順序です(挿入順序) )」HashMap
: "マップの順序は保証されません"TreeMap
: "キーの自然順序付けに従って、またはComparator
によってソートされます" SortedMap
です。したがって、この場合はLinkedHashMap
が必要です。
ここに違いを説明するスニペットがあります。また、Map
のすべてのエントリを反復処理する一般的な方法と、インターフェイスを使用してオブジェクトを参照することで、実装の選択に大きな柔軟性を与える方法も示します。
import Java.util.*;
public class MapExample {
public static void main(String[] args) {
populateThenDump(new HashMap<String,Integer>());
populateThenDump(new TreeMap<String,Integer>());
populateThenDump(new LinkedHashMap<String,Integer>());
}
static void populateThenDump(Map<String,Integer> map) {
System.out.println(map.getClass().getName());
map.put("Zero", 0);
map.put("One", 1);
map.put("Two", 2);
map.put("Three", 3);
map.put("Four", 4);
for (Map.Entry<String,Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
}
}
上記のスニペットの出力は( ideone.comに表示 )です。
Java.util.HashMap // unordered, results may vary
Three => 3
Zero => 0
One => 1
Four => 4
Two => 2
Java.util.TreeMap // ordered by String keys lexicographically
Four => 4
One => 1
Three => 3
Two => 2
Zero => 0
Java.util.LinkedHashMap // insertion order
Zero => 0
One => 1
Two => 2
Three => 3
Four => 4
Iterator
を使用する必要があります。ハッシュテーブルには、 LinkedHashMap
クラスを使用します。
LinkedHashMap
クラスを検索しています。