2017-02-06 60 views
-1

我有鍵值,現在我只想通過將值添加到樹中來排序值。因爲樹集執行升序排序。如何使用treeset對hashmap中的值進行排序?

存在一種將被稱爲轉換映射轉換爲列表的方法。但這是一種忙碌的方法,對此有何評論?

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個元素(第四屆「K4」在HashMap中的條目一套會迷失)

我會建議使用Java流

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

這將整理並保留所有值。

+0

列表 collect = hashmap.values()。stream()。sorted() .collect(Collectors.toList());這是什麼?? – Attri

+1

「Stream是在Java 8中引入的一個新的抽象層。使用流,可以使用類似於SQL語句的聲明方式處理數據」 - >請參見https://www.tutorialspoint.com/java8/java8_streams.htm – kamehl23

相關問題