`
liuzhaomin
  • 浏览: 207324 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

TreeSet,基于TreeMap实现

 
阅读更多

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&nbsp;?&nbsp;e2==null&nbsp;:&nbsp;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&nbsp;?&nbsp;e==null&nbsp;:&nbsp;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;
    }
 
分享到:
评论

相关推荐

    后端常见面试题总结 - JAVA 集合框架.pdf

    TreeSet基于TreeMap实现,可以对元素进行排序,适用于需要排序的场景。 Queue接口主要的实现类有PriorityQueue和LinkedList。PriorityQueue基于优先堆实现,可以对其中的元素进行排序。LinkedList实现了Queue接口,...

    treemap treeset hashset hashmap 简要介绍

    `TreeSet`是基于`TreeMap`实现的一个Set(集合)实现。它同样要求元素是可比较的,或者在创建时提供一个`Comparator`。`TreeSet`可以保证集合中的元素处于排序状态,不会包含重复的元素,因为它是通过`TreeMap`的键...

    TreeSet 红黑树结构算法

    TreeSet 的实现是基于 TreeMap 的,TreeSet 使用 NavigableMap 来保存 Set 集合的元素。TreeSet 的构造器可以指定 NavigableMap 对象,以便创建 Set 集合。TreeSet 还提供了多种构造器,以便满足不同的使用场景。...

    TreeSe元素t和TreeMap键值不能为null1

    在Java编程语言中,`TreeSet`和`TreeMap`是两种基于红黑树数据结构的集合类,它们都属于`java.util`包。这两个类主要用于存储有序的数据,因此它们在内部实现上需要进行比较操作,这就导致了它们对`null`值的特殊...

    阿里P8整理JAVA核心面试知识点.pdf

    - HashSet基于HashMap实现,TreeSet基于TreeMap实现。 - HashMap在Java 7和Java 8中的实现有所不同,Java 8中引入了红黑树以优化性能。 - ConcurrentHashMap是线程安全的,其设计目标是在保证线程安全的同时提升并发...

    java中treemap和treeset实现红黑树

    TreeSet 的实现是基于TreeMap的,使用TreeMap的key来保存Set集合的元素。 从TreeSet的源代码可以看到,TreeSet使用了一个NavigableMap来保存Set集合的元素,其中NavigableMap是TreeMap的一个子接口。TreeSet的构造...

    Java 面试 某团 2024 面试题

    - **HashSet与TreeSet**:HashSet基于HashMap实现,TreeSet基于TreeMap实现。 - **HashSet底层实现**:通过HashMap实现,key为对象本身,value为一个固定的虚拟对象。 - **LinkedHashMap原理**:HashMap的子类,内部...

    JAVA核心面试知识整理

    Set接口表示一个不允许重复的元素集合,HashSet基于HashMap实现,TreeSet基于TreeMap实现,LinkHashSet结合了HashSet和LinkedHashMap。 3.4 MAP Map接口用于存储键值对,HashMap在Java7和Java8中的实现有所不同,...

    HashSet和TreeSet_围墙之外

    TreeSet则基于TreeMap实现,它维护了元素的排序顺序,可以按照自然排序或自定义比较器进行排序。默认情况下,元素会按照它们的自然顺序(即Comparable接口定义的顺序)排序,如果元素不支持自然排序,可以在创建...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    TreeSet基于红黑树实现,自动维护元素的排序。默认按照元素的自然顺序或自定义比较器进行排序。 3. **Map**: 存储键值对,如HashMap和TreeMap。HashMap使用哈希表实现,不保证键值对的顺序;而TreeMap基于红黑树,...

    我的面试问题总结.docx

    TreeSet基于TreeMap,元素按自然排序或自定义比较器排序,插入和查找效率稍低。 6. TreeSet vs TreeMap:TreeSet是TreeMap的一个子集,存储元素,而TreeMap存储键值对,两者均保证元素按特定顺序排列。 五、线程...

    红黑树算法实现

    TreeSet是Set接口的实现,它内部依赖于TreeMap来实现。在TreeSet的构造函数中,我们可以看到它创建了一个内部的TreeMap实例,用于存储元素。每个添加到TreeSet的元素都会被当作键放入这个内部的TreeMap,而值则是一...

    浅谈java中的TreeMap 排序与TreeSet 排序

    在Java编程语言中,`TreeMap` 和 `TreeSet` 是两种基于红黑树数据结构实现的集合类,它们都提供了自动排序的功能。本文将详细探讨 `TreeMap` 和 `TreeSet` 的排序机制以及如何自定义排序规则。 首先,`TreeMap` 是...

    通过分析_JDK_源代码研究_TreeMap_红黑树算法实现.docx

    TreeMap 和 TreeSet 是 Java 集合框架中的重要成员,它们提供了基于红黑树的数据结构实现。从给定部分源代码可以看到,TreeSet 的构造器实际上依赖于 TreeMap 的实例化。具体来说: 1. **构造器分析**: - TreeSet...

    Java核心知识体系6:集合框架详解.pdf

    - **TreeSet**:基于TreeMap实现的Set,元素按自然顺序或自定义比较器排序。 - **HashMap**:提供键值对的存储,基于哈希表,提供快速查找。 - **TreeMap**:基于红黑树的Map,元素按自然顺序或自定义比较器排序...

    java集合总结副本共19页.pdf.zip

    ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet、HashMap、LinkedHashMap和TreeMap是这些接口的主要实现类。 5. **泛型**:在Java集合中广泛使用泛型,可以确保集合中只存储特定类型的元素,提高了代码的...

    java.集合框架(解决方案).md

    TreeSet基于红黑树实现,可以保证元素处于排序状态。 Queue接口主要用于实现队列这种数据结构,主要实现类有PriorityQueue。它根据元素的自然顺序或构造时提供的Comparator进行排序,常用于实现优先队列。 Map接口...

    java中HashMap,LinkedHashMap,TreeMap,HashTable的区别

    `HashMap`是一种基于哈希表实现的`Map`接口,提供了一个非同步的、允许使用`null`键和值的存储结构。`HashMap`通过计算对象的哈希码来存储和检索对象,这使得数据可以在常数时间内被访问。 - **特点**: - **非...

    排序之HashSet和TreeSet的区别

    `TreeSet`则基于`TreeMap`,内部使用红黑树数据结构。它维护了元素的排序,可以按照自然顺序或者自定义比较器的顺序进行排序。自然顺序是指元素本身的`Comparable`接口实现,如果元素类型不实现`Comparable`,则需要...

Global site tag (gtag.js) - Google Analytics