2017-02-06 8 views
-1

У меня есть значения ключей, теперь я хотел бы сортировать значения, только добавив их в набор деревьев. Поскольку древовидный набор выполняет сортировку по возрастанию.Как отсортировать значения в hashmap с помощью treeet?

Существует метод преобразования, называемый преобразованием карты в список. Но это суетливый метод, может ли кто-нибудь прокомментировать это?

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» в HashMap заблудитесь)

Я бы рекомендовал использовать 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

 Смежные вопросы

  • Нет связанных вопросов^_^