2017-02-06 119 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

相关问题