2017-02-06 4 views
-1

Ich habe Schlüsselwerte, jetzt möchte ich Werte nur sortieren, indem ich sie zum Baumsatz hinzufüge. Weil Tree-Set die Sortierung in aufsteigender Reihenfolge durchführt.Wie sortiere ich Werte in Hashmap mit Hilfe von Treeset?

Es gibt eine Methode, die Converting genannte Umwandlung Karte in Liste konvertiert. Aber es ist eine hektische Methode, kann jemand dazu etwas sagen?

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

Geben Sie den Code an, mit dem Sie arbeiten, damit wir das Problem in Aktion sehen können. – RedBassett

+0

Sie können die Schaltfläche "Bearbeiten" unter Ihrer Frage verwenden, um dies zur ursprünglichen Frage hinzuzufügen! – RedBassett

+0

Hier sind ein paar Optionen: http://stackoverflow.com/questions/109383/sort-a-mapkey-value-by-values-java – Andreas

Antwort

0

Ja, Sie können dies tun:

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()); 

Aber Vorsicht, in diesem Beispiel auf diese Weise von "Sortierung" in einem Satz zur Folge haben wil 3 Elemente (die 4. "k4" Eintrag in hashmap enthalten wird verloren gehen)

ich würde empfehlen, java

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

dies sortieren und halten Ströme zu verwenden, um alle Werte.

+0

Liste collect = hashmap.values ​​(). Stream() .sorted() .collect (Collectors.toList()); Was ist das?? – Attri

+1

"Stream ist eine neue abstrakte Ebene, die in Java 8 eingeführt wurde. Mit stream können Sie Daten auf eine deklarative Weise ähnlich wie SQL-Anweisungen verarbeiten" -> siehe https://www.tutorialspoint.com/java8/java8_streams.htm – kamehl23

Verwandte Themen