TreeSet是否基于键和值?

时间:2016-04-25 18:31:11

标签: java collections treeset

我正在阅读作为Java集合框架一部分的树集。如果树集将其元素存储在表单对中,我会坚持使用方面吗?

1 个答案:

答案 0 :(得分:2)

TreeSet的API就可比较对象而言,但它使用了TreeMap,其中每个键值对都具有相同的虚拟对象PRESENT。查看the code,这是:

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

例如,add实现为:

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

地图要求按键具有唯一性,因此它们只是集合的更通用版本,并具有所有必要的机制。但是我们只需要地图的一半,即键,并且可以用一个虚拟值替换不同的值。