zoukankan      html  css  js  c++  java
  • 关于Set的源码分析

    Set接口继承collection接口,里面的方法在collection中都存在

    Set的几个主要实现类为:HashSet,TreeSet

    HashSet源码

    //HashSet的继承关系
    public
    class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
    //由此可以看出hashSet底层实现是用HashMap
    private transient HashMap<E,Object> map;
    
    public HashSet() {
            map = new HashMap<>();
        }

    通过下面方法,我们可以看出来,HashSet的实现方法为map操作

        //遍历    
        public Iterator<E> iterator() {
               return map.keySet().iterator();
        }
        //计算长度
        public int size() {
            return map.size();
        }
        //判断是否为空
        public boolean isEmpty() {
            return map.isEmpty();
        }
        //添加
         public boolean add(E e) {
            return map.put(e, PRESENT)==null;
        }

     TreeSet源码

    //TreeSet的继承关系
    public class TreeSet<E> extends AbstractSet<E>
        implements NavigableSet<E>, Cloneable, java.io.Serializable
    //有此可以看出TreeSet的底层实现也为map
    public
    TreeSet() { this(new TreeMap<E,Object>()); }

    TreeSet常用方法,都是调用Treemap中的方法,只是在添加的时候用静态常量PRESENT来填充map的value位置。

  • 相关阅读:
    笨蛋蛋都能学会的开机grub消除(双系统开机总是黑屏肿么办--多半是欠reset)
    Find a way HDU
    非常可乐 HDU
    Oil Deposits HDU
    迷宫问题 POJ
    Fire!
    Fire Game FZU
    Pots POJ
    Prime Path POJ
    Jquery鼠标悬停按钮图标动态变化效果
  • 原文地址:https://www.cnblogs.com/bokai/p/9675209.html
Copyright © 2011-2022 走看看