`
liuzhaomin
  • 浏览: 204294 次
  • 性别: 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;
    }
 
分享到:
评论

相关推荐

    treemap treeset hashset hashmap 简要介绍

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

    TreeSet 红黑树结构算法

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

    阿里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核心面试知识整理

    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中HashMap,LinkedHashMap,TreeMap,HashTable的区别

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

    排序之HashSet和TreeSet的区别

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

    基于JAVA实现的常用数据结构代码,JAVA实现复杂度、动态数组、链表、栈、队列、二叉搜索树等

    Java中的TreeSet和TreeMap底层就是基于红黑树实现的,这是一种自平衡的二叉搜索树。 通过研究这个压缩包中的代码,开发者可以深入理解这些数据结构的内部工作原理,提高编程技能,并能根据具体应用场景选择合适的...

    Java基础之浅谈集合.doc

    TreeSet 是基于红黑树(一种自平衡二叉查找树)实现的集合,它提供了排序的功能,插入元素时会自动排序,元素的插入和查询速度都较快。 ### 1.5 Map 接口 Map 不是 Collection 的子接口,而是独立的一类接口,它...

    【IT十八掌徐培成】Java基础第12天-02.TreeSet实现与Comparable接口.zip

    在Java编程语言中,`TreeSet`是一个基于`TreeMap`实现的有序集合。它遵循了`SortedSet`接口,因此元素在集合中是按照特定的顺序排列的。本课程重点讲解了`TreeSet`如何实现`Comparable`接口以及如何自定义比较规则。...

    java集合类类性能测试源代码

    - TreeSet是基于红黑树实现的有序集合,插入、查找和删除操作的时间复杂度为O(logn),并且元素按自然顺序或自定义比较器排序。 - TreeMap也是基于红黑树,同样提供了O(logn)的性能,用于存储有序的键值对,且支持...

Global site tag (gtag.js) - Google Analytics