2017-08-08 11 views
1

は、私は次のように定義されたHashMapを持っている:私は、彼らがキーに基づいてアルファベット順に終わるこのHashMapのに新しいエントリを置くハッシュマップはアルファベット順に配置されていますか?

private final Map<String, DataTable> reports = new HashMap(); 

。なぜこれをやっているのですか?どのように私はそれらをHashMapに追加した順に並べるのですか?

+0

「アルファベット順で終わる」とはどういう意味ですか?もっとコードを表示できますか? – arshajii

+0

ハッシュマップは発注されていません。 TreeMapsはあります。 – bcsb1001

+5

文字列の自然順序**はアルファベット順であり、 'HashMap'は順序付けされていません。 – Kayaman

答えて

2

HashMapは、追加する要素の順序を明示的に定義しません。 HashSetの場合と同様に、要素はハッシュコードによって整列していますが、これは多かれ少なかれランダムです。

マップの順序を挿入順に保持する場合は、代わりにLinkedHashMapを使用できます。挿入後に要素をソートする必要がある場合は、TreeMapを使用します。

+0

私は 'Set'によって' HashSet'を明示的に意味すると思いますか?他の 'Set'実装はハッシュコードによって順序付けできないかもしれません。 – Zabuza

+0

はい、あなたは正しいです。私はHashSetを意味します。 – Simulant

+0

'LinkedHashMap'が追加された順番になるように、私は' LinkedHashMap'が必要でした。 –

0

ハッシュマップの全体的なポイントは、挿入と検索のパフォーマンスが向上し、その他の利点が得られるように、注文の管理を放棄することです。注文の管理を取り戻すには、SortedMapを調べてください。

0
LinkedHashMap- preserve the insertion order. 
TreeMap - Elements sorted after insertion. 

HashMapは挿入された要素の順序を維持しません。

0

HashMapは値を追加する方法ではなく、キーに基づいてランダムに値を追加します。追加する順序で値を追加するには、LinkedHashMapを使用するか、マップをアルファベット順にソートしたい場合はTreeMapを使用します。私はこれがあなたの疑いを解消することを願っています

関連する問題