2016-04-25 5 views
1

Я читал о наборе деревьев, который является частью структуры коллекций Java. Я застрял в аспекте, если набор деревьев хранит его элементы в парах форм?Является ли TreeSet основанным на ключе и значении?

+0

TreeSet не основан на ключе и значении. TreeMap - – 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

ответ

2

API TreeSet в контексте объектов Comparable, но под капотом он использует TreeMap, где каждая пара ключ-значение имеет тот же объект-заглушку PRESENT. Глядя в the code, это:

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

Например, добавить реализован как:

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

Карты требуют уникальности на клавишах, поэтому они просто более общие версии множеств и есть все необходимое техника. Но нам нужна только одна половина карты, ключи, и она может заменить различные значения с помощью единственного фиктивного значения.

+0

Большое вам спасибо за это! Вы упомянули в своем объяснении, добавление выполняется следующим образом. Но в большинстве кода я действительно не вижу этот метод, кроме Linkedlist. Это сделано внутренне? – Srinivas