TreeSet基于TreeMap实现,支持排序;
TreeSet是非线程安全的;
public class TreeSet<E> extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, java.io.Serializable
{
/**
* The backing map.
*/
private transient NavigableMap<E,Object> m;
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();
/**
* Constructs a set backed by the specified navigable map.
*/
TreeSet(NavigableMap<E,Object> m) {
this.m = m;
}
/**
* Constructs a new, empty tree set, sorted according to the
* natural ordering of its elements. All elements inserted into
* the set must implement the {@link Comparable} interface.
* Furthermore, all such elements must be <i>mutually
* comparable</i>: {@code e1.compareTo(e2)} must not throw a
* {@code ClassCastException} for any elements {@code e1} and
* {@code e2} in the set. If the user attempts to add an element
* to the set that violates this constraint (for example, the user
* attempts to add a string element to a set whose elements are
* integers), the {@code add} call will throw a
* {@code ClassCastException}.
*/
public TreeSet() {
this(new TreeMap<E,Object>());
}
/**
* Adds the specified element to this set if it is not already present.
* More formally, adds the specified element <tt>e</tt> to this set if
* this set contains no element <tt>e2</tt> such that
* <tt>(e==null ? e2==null : e.equals(e2))</tt>.
* If this set already contains the element, the call leaves the set
* unchanged and returns <tt>false</tt>.
*/
public boolean add(E e) {
return m.put(e, PRESENT)==null;
}
/**
* Removes the specified element from this set if it is present.
* More formally, removes an element <tt>e</tt> such that
* <tt>(o==null ? e==null : o.equals(e))</tt>,
* if this set contains such an element. Returns <tt>true</tt> if
* this set contained the element (or equivalently, if this set
* changed as a result of the call). (This set will not contain the
* element once the call returns.)
*/
public boolean remove(Object o) {
return map.remove(o)==PRESENT;
}
分享到:
相关推荐
`TreeSet`是基于`TreeMap`实现的一个Set(集合)实现。它同样要求元素是可比较的,或者在创建时提供一个`Comparator`。`TreeSet`可以保证集合中的元素处于排序状态,不会包含重复的元素,因为它是通过`TreeMap`的键...
TreeSet 的实现是基于 TreeMap 的,TreeSet 使用 NavigableMap 来保存 Set 集合的元素。TreeSet 的构造器可以指定 NavigableMap 对象,以便创建 Set 集合。TreeSet 还提供了多种构造器,以便满足不同的使用场景。...
- HashSet基于HashMap实现,TreeSet基于TreeMap实现。 - HashMap在Java 7和Java 8中的实现有所不同,Java 8中引入了红黑树以优化性能。 - ConcurrentHashMap是线程安全的,其设计目标是在保证线程安全的同时提升并发...
TreeSet 的实现是基于TreeMap的,使用TreeMap的key来保存Set集合的元素。 从TreeSet的源代码可以看到,TreeSet使用了一个NavigableMap来保存Set集合的元素,其中NavigableMap是TreeMap的一个子接口。TreeSet的构造...
Set接口表示一个不允许重复的元素集合,HashSet基于HashMap实现,TreeSet基于TreeMap实现,LinkHashSet结合了HashSet和LinkedHashMap。 3.4 MAP Map接口用于存储键值对,HashMap在Java7和Java8中的实现有所不同,...
TreeSet则基于TreeMap实现,它维护了元素的排序顺序,可以按照自然排序或自定义比较器进行排序。默认情况下,元素会按照它们的自然顺序(即Comparable接口定义的顺序)排序,如果元素不支持自然排序,可以在创建...
TreeSet基于红黑树实现,自动维护元素的排序。默认按照元素的自然顺序或自定义比较器进行排序。 3. **Map**: 存储键值对,如HashMap和TreeMap。HashMap使用哈希表实现,不保证键值对的顺序;而TreeMap基于红黑树,...
TreeSet基于TreeMap,元素按自然排序或自定义比较器排序,插入和查找效率稍低。 6. TreeSet vs TreeMap:TreeSet是TreeMap的一个子集,存储元素,而TreeMap存储键值对,两者均保证元素按特定顺序排列。 五、线程...
TreeSet是Set接口的实现,它内部依赖于TreeMap来实现。在TreeSet的构造函数中,我们可以看到它创建了一个内部的TreeMap实例,用于存储元素。每个添加到TreeSet的元素都会被当作键放入这个内部的TreeMap,而值则是一...
在Java编程语言中,`TreeMap` 和 `TreeSet` 是两种基于红黑树数据结构实现的集合类,它们都提供了自动排序的功能。本文将详细探讨 `TreeMap` 和 `TreeSet` 的排序机制以及如何自定义排序规则。 首先,`TreeMap` 是...
TreeMap 和 TreeSet 是 Java 集合框架中的重要成员,它们提供了基于红黑树的数据结构实现。从给定部分源代码可以看到,TreeSet 的构造器实际上依赖于 TreeMap 的实例化。具体来说: 1. **构造器分析**: - TreeSet...
- **TreeSet**:基于TreeMap实现的Set,元素按自然顺序或自定义比较器排序。 - **HashMap**:提供键值对的存储,基于哈希表,提供快速查找。 - **TreeMap**:基于红黑树的Map,元素按自然顺序或自定义比较器排序...
ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap和TreeMap是这些接口的主要实现类。 5. **泛型**:在Java集合中广泛使用泛型,可以确保集合中只存储特定类型的元素,提高了代码的...
`HashMap`是一种基于哈希表实现的`Map`接口,提供了一个非同步的、允许使用`null`键和值的存储结构。`HashMap`通过计算对象的哈希码来存储和检索对象,这使得数据可以在常数时间内被访问。 - **特点**: - **非...
`TreeSet`则基于`TreeMap`,内部使用红黑树数据结构。它维护了元素的排序,可以按照自然顺序或者自定义比较器的顺序进行排序。自然顺序是指元素本身的`Comparable`接口实现,如果元素类型不实现`Comparable`,则需要...
Java中的TreeSet和TreeMap底层就是基于红黑树实现的,这是一种自平衡的二叉搜索树。 通过研究这个压缩包中的代码,开发者可以深入理解这些数据结构的内部工作原理,提高编程技能,并能根据具体应用场景选择合适的...
TreeSet 是基于红黑树(一种自平衡二叉查找树)实现的集合,它提供了排序的功能,插入元素时会自动排序,元素的插入和查询速度都较快。 ### 1.5 Map 接口 Map 不是 Collection 的子接口,而是独立的一类接口,它...
在Java编程语言中,`TreeSet`是一个基于`TreeMap`实现的有序集合。它遵循了`SortedSet`接口,因此元素在集合中是按照特定的顺序排列的。本课程重点讲解了`TreeSet`如何实现`Comparable`接口以及如何自定义比较规则。...
- TreeSet是基于红黑树实现的有序集合,插入、查找和删除操作的时间复杂度为O(logn),并且元素按自然顺序或自定义比较器排序。 - TreeMap也是基于红黑树,同样提供了O(logn)的性能,用于存储有序的键值对,且支持...