2017-12-13 10 views
2

LinkeHashmapを使用する点を除いて、キーの順序が正しいハッシュマップを取得できますか?ハッシュマップを整然と整える方法は?

 Map<String,String> myMapTmp = XXDao().getXXX(); 
     Map<String,String> myMap = new LinkedHashMap<String,String>(); 

     List<String> keyList = new ArrayList<String>(); 
     Iterator<String> it =myMapTmp.keySet().iterator(); 
     while(it.hasNext()){ 
      keyList.add(it.next()); 
     } 
     Collections.sort(keyList); 
     Iterator<String> it2 = keyList.iterator(); 
     while(it2.hasNext()){ 
      String key = it2.next(); 
      myMap.put(key, myMapTmp.get(key)); 
     } 
+5

'LinkedHashMap'を使わずに' HashMap'を任意の順序で取得することを意味しますか?いいえ、できません。 –

答えて

2

あなたは、単にのLinkedHashMapを使用HashMap

Map<String,String> myMapTmp = XXDao().getXXX(); 
// TreeMap keeps all entries in sorted order 
TreeMap<String, String> sortedMap = new TreeMap<>(myMapTmp); 
Set<Entry<String, String>> mappings = sortedMap.entrySet(); 
System.out.println("HashMap after sorting by keys in ascending order "); 
for(Entry<String, String> mapping : mappings){ 
    System.out.println(mapping.getKey() + " ==> " + mapping.getValue()); 
} 
1

既存のマップからツリーマップを作成して、ツリーマップにすべてのエントリを並べ替えることができます。

TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>(); 
treeMap.putAll(myMapTmp); 
-1

のマッピングでTreeMapを使用することができます。それはあなたに望ましい結果を与えるでしょう。

+0

LinkedHashMapは、キーの挿入順序を常に維持します。 –

+0

私は既にそれを知っていますが、質問はキーではなかったので、LinkedHashMapのような機能を提供することに関連していました。質問を正しく読んでください。 LinkedHashMapは挿入に基づいてOrderingを提供します。それは問題のことが予想されることです。 –

関連する問題