2016-04-25 17 views
1

Ich las über den Tree-Set, der Teil des Java-Collections-Framework ist. Ich bleibe bei dem Aspekt, wenn Baumsatz seine Elemente in den Formpaaren speichert?Basiert TreeSet auf Schlüssel und Wert?

+0

TreeSet basiert nicht auf Schlüssel und Wert. TreeMap ist – JavaHopper

+0

TreeSet: https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html TreeMap: https://docs.oracle.com/javase/7/docs/ api/java/util/TreeMap.html – JavaHopper

Antwort

2

Die TreeSet-API ist in Bezug auf vergleichbare Objekte, aber unter der Haube verwendet sie eine TreeMap, wo jedes Schlüssel-Wert-Paar das gleiche Dummy-Objekt PRESENT hat. Suchen Sie in the code, ist dies:

// Dummy value to associate with an Object in the backing Map 
    private static final Object PRESENT = new Object(); 

Fügen Sie zum Beispiel implementiert als:

public boolean add(E e) { 
     return m.put(e, PRESENT)==null; 
} 

Karten auf Tasten Einzigartigkeit erfordern, so dass sie einfach allgemeinere Versionen von Sets und haben alle notwendigen Maschinen. Aber wir brauchen nur eine Hälfte der Karte, die Schlüssel, und können variierende Werte durch einen einzigen Dummy-Wert ersetzen.

+0

Vielen Dank dafür !! Sie haben in Ihrer Erklärung erwähnt, dass Add wie folgt implementiert ist. Aber in den meisten Code sehe ich diese Methode außer für Linkedlist wirklich nicht. Ist das intern erledigt? – Srinivas

Verwandte Themen