共同学习Java源代码-数据结构-TreeSet(一)

public class TreeSet<E> extends AbstractSet<E>
    implements NavigableSet<E>, Cloneable, java.io.Serializable

这个类继承自AbstractSet类,实现了NavigableSet接口、Cloneable接口和Serializable接口。


private transient NavigableMap<E,Object> m;

这个成员变量是TreeSet的底层Map,为NavigableMap接口的实现。


private static final Object PRESENT = new Object();

这个对象是底层Map的值对象。


TreeSet(NavigableMap<E,Object> m) {
     this.m = m;
 }

这个构造方法传入一个NavigableMap参数,将参数赋引用给底层map,这个构造方法是留给其他构造方法调用的。


public TreeSet() {
    this(new TreeMap<E,Object>());
}

这个无参的构造方法,调用上一个构造方法,传入一个TreeMap参数。


public TreeSet(Comparator<? super E> comparator) {

    this(new TreeMap<>(comparator));
}

这个构造方法传入一个Comparator对象,调用那个默认修饰符的构造方法,并为之传入一个TreeMap对象,TreeMap对象传入这个Comparator对象。


public TreeSet(Collection<? extends E> c) {

    this();
    addAll(c);
}

这个构造方法传入一个Collection实现类参数。首先调用无参构造方法,然后调用本类实现的addAll方法将参数全部添加。


public TreeSet(SortedSet<E> s) {
    this(s.comparator());
    addAll(s);

}

这个构造方法传入一个SortedSet参数。首先调用那个传入Comparator实现类参数的构造方法,将参数的Comparator属性传入。然后调用addAll方法将参数添加进本集合。


public Iterator<E> iterator() {
    return m.navigableKeySet().iterator();
}

这个方法是返回迭代器的方法。将底层map的键集合的迭代器返回。


public Iterator<E> descendingIterator() {

   return m.descendingKeySet().iterator();
}

这个方法是返回反向迭代器的方法。将底层map的键集合的反向迭代器返回。


public NavigableSet<E> descendingSet() {
   return new TreeSet<>(m.descendingMap());

}

这个方法是返回反向集合的方法。返回一个新的TreeSet然后将底层map的反向Map传入新TreeSet。


public int size() {
  return m.size();
}

这个方法返回的是长度,也就是底层map的长度。


 public boolean isEmpty() {
    return m.isEmpty();
 }

这个方法是判断集合是否为空的方法,返回的是底层map是否为空。


public boolean contains(Object o) {
   return m.containsKey(o);
}

这个方法是判断本集合是否包含参数对象。其实是判断底层map是否包含参数对象。


public boolean add(E e) {

  return m.put(e, PRESENT)==null;
}

这个方法是添加元素的方法,其实是将参数作为底层map的键,那个PRESENT对象作为值。底层map的put方法的返回值是否为空作为这个方法的返回值。


public boolean remove(Object o) {
  return m.remove(o)==PRESENT;
}

这个方法是删除元素的方法。调用的是底层map的删除方法,底层map的remove方法的返回值和PRESENT是否相等作为这个方法的返回值。

   

 public void clear() {
    m.clear();
 }

这个方法是将集合清空的方法,调用的是底层map的clear方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值