AbstractSet抽象类源码解析

继承AbstractCollection

实现Set

源码如下



package java.util;

public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {

    protected AbstractSet() {
    }

    public boolean equals(Object o) {
        if (o == this)
            return true;

        if (!(o instanceof Set))
            return false;
        Collection c = (Collection) o;
        if (c.size() != size())
            return false;
        try {
            return containsAll(c);
        } catch (ClassCastException unused)   {
            return false;
        } catch (NullPointerException unused) {
            return false;
        }
    }

    public int hashCode() {
        int h = 0;
        Iterator<E> i = iterator();
        while (i.hasNext()) {
            E obj = i.next();
            if (obj != null)
                h += obj.hashCode();
        }
        return h;
    }

    public boolean removeAll(Collection<?> c) {
        boolean modified = false;

        if (size() > c.size()) {
            for (Iterator<?> i = c.iterator(); i.hasNext(); )
                modified |= remove(i.next());
        } else {
            for (Iterator<?> i = iterator(); i.hasNext(); ) {
                if (c.contains(i.next())) {
                    i.remove();
                    modified = true;
                }
            }
        }
        return modified;
    }

}
时间: 2024-10-04 17:06:32

AbstractSet抽象类源码解析的相关文章

EnumSet抽象类源码解析

EnumSet 专门为枚举类设计的集合类,所有元素必须是枚举类型 EnumSet的集合元素是有序的,内部以位向量的形成存储,因此占用内存小,效率高 不允许加入null元素 源码 package java.util; import sun.misc.SharedSecrets; public abstract class EnumSet<E extends Enum<E>> extends AbstractSet<E> implements Cloneable, java

AbstractSequentialList抽象类源码解析

所在包 package java.util; 继承AbstractList抽象类 public abstract class AbstractSequentialList<E> extends AbstractList<E> { // 内部代码下面讲解 } 空构造器 protected AbstractSequentialList() { } 获取指定index位置的元素 这里是通过迭代器获取 /* @throws IndexOutOfBoundsException {@inher

AbstractList抽象类源码解析

所在包 package java.util; 继续AbstractCollection抽象类 实现List接口 public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>{ // 内部代码下面讲解 } 空构造器 protected AbstractList() { } 添加元素,在尾部添加新的元素 /* @throws UnsupportedOperatio

AbstractMap抽象类源码解析

实现了Map package java.util; import java.util.Map.Entry; /** * AbstractMap */ public abstract class AbstractMap<K,V> implements Map<K,V> { /** * 空构造函数 */ protected AbstractMap() { } // Query Operations /** * size */ public int size() { return ent

Dictionary抽象类源码解析

Dictionary package java.util; public abstract class Dictionary<K,V> { public Dictionary() { } abstract public int size(); abstract public boolean isEmpty(); abstract public Enumeration<K> keys(); // 枚举类型 ,在Map中是 set类型 abstract public Enumerati

AbstractQueue抽象类源码解析

继承Queue 对一些方法增加抛出异常 package java.util; public abstract class AbstractQueue<E> extends AbstractCollection<E> implements Queue<E> { /** * 空构造器 */ protected AbstractQueue() { } /** * 插入元素 * * @param e the element to add * @return <tt>

【转】Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMap数据结构第3部分 TreeMap源码解析(基于JDK1.6.0_45)第4部分 TreeMap遍历方式第5部分 TreeMap示例 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3310928 第1部

【转】Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例

概要 前一章,我们学习了HashMap.这一章,我们对Hashtable进行学习.我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable.第1部分 Hashtable介绍第2部分 Hashtable数据结构第3部分 Hashtable源码解析(基于JDK1.6.0_45)第4部分 Hashtable遍历方式第5部分 Hashtable示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3310887.h

Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMap数据结构第3部分 TreeMap源码解析(基于JDK1.6.0_45)第4部分 TreeMap遍历方式第5部分 TreeMap示例 转载:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3310928 第1部分 Tre