2017-02-06 11 views
-1

私はキーの値を持っていますが、今はソートの値をツリーセットに追加するだけです。 tree-setは昇順の並べ替えを実行するためです。treesetを使ってハッシュマップの値をソートする方法は?

変換マップをリストに変換する方法があります。しかし、それは忙しい方法です、これについて誰かがコメントできますか?

package practice; 
import java.io.ObjectInputStream.GetField; 
import java.util.*; 
import java.util.Map.Entry; 

public class example1{ 
    public static void main(String[] args) { 
     Map<Integer,String> map = new HashMap<Integer,String>(); 
     map.put(1, "h"); 
     map.put(2, "l"); 
     map.put(3, "a"); 
     System.out.println(map); 
     System.out.println("unsort"); 
     for(Map.Entry m:map.entrySet()) { 
      System.out.println(m.getKey()+" - "+m.getValue()); 
     } 
     System.out.println("sorting by values"); 
    } 
} 
+0

作業中の問題を確認できるように、作業しているコードをご記入ください。 – RedBassett

+0

あなたの質問の下にある「編集」ボタンを使って、元の質問にこれを追加することができます! – RedBassett

+0

ここにいくつかのオプションがあります:http://stackoverflow.com/questions/109383/sort-a-mapkey-value-by-values-java – Andreas

答えて

0

はい、あなたがこれを行うことができます:「仕分け」のこの方法を

HashMap<String, String> hashmap = new HashMap<>(); 
hashmap.put("k1", "Zz"); 
hashmap.put("k2", "A"); 
hashmap.put("k3", "Zd"); 
hashmap.put("k4", "Zd"); 

TreeSet<String> set = new TreeSet<>(hashmap.values()); 

をしかし、この例では、注意が必要ハッシュマップの3つの要素(第4回「K4」のエントリを含むセットになりウィル)迷子になる

私は、これが並べ替えると、すべて維持されますJavaは

List<String> collect = hashmap.values().stream().sorted().collect(Collectors.toList()); 

ストリーム使用することをお勧めします値。

+0

リスト collect = hashmap.values()。stream()。sorted() .collect(Collectors.toList());これは何ですか?? – Attri

+1

"ストリームはJava 8で導入された新しい抽象レイヤーです。ストリームを使用すると、SQLステートメントと同様の宣言的方法でデータを処理できます。" - > https://www.tutorialspoint.com/java8/java8_streams.htmを参照してください。 – kamehl23

関連する問題