2011-07-07 15 views
2

以下はハッシュマップに値を挿入するためのコードです。ハッシュマップにキーを入れて同じ順序で取得する

String[] folders={"Movies/HD/By Genre/Action","Movies/HD/By Genre/Comedy"}; 
HashMap<String, String> sdsResults = new HashMap<String, String>(); 

for(int i=0; i<folders.length; i++){ 
    sdsResults.put(folders[i], null); 
} 

Iterator<String> itr = sdsResults.keySet().iterator(); 
while(itr.hasNext()){ 
    System.out.println("keys in map are = "+itr.next()); 
} 

出力がある -

keys in map are = Movies/HD/By Genre/Comedy 
keys in map are = Movies/HD/By Genre/Action 

今私は私が入れていた方法と同じ順序で来てキーにたかっすなわち、最初のアクションは、1が来て、その後、コメディ必要があります。しかし逆の順序が来ている。

なぜ誰かが説明できるのですか?そして、その注文をフォルダの内容と同じにしたい。どうすればこれを達成できますか?

答えて

1

ハッシュ内のキーの順序は定義されていません。地図が必要です。 Here's内部の比較。

基本的には、何かをハッシュに入れたら、そのキーをスクランブルします。これはone-way functionです。 全体のポイントは、それをやりなおすことができないということです。これは、100個を10個のボックスに入れる方法です。

+0

特定の順序でキーを取得する他の方法があります。使用できるその他のコレクションタイプ – Swati

+0

マップは正しい抽象データ型です。別の実装(バイナリツリー、スキップリスト、...)があるかもしれません。 – spraff

+0

もちろん、あなたは別々にあなたのキーのベクトルを維持することができます! – spraff

-1

ApacheのCommons-CollectionライブラリのListOrderedMapを使用して、注文を保存できます。

関連する問題