美文网首页
Java集合框架(二)— Collection

Java集合框架(二)— Collection

作者: Sandy_678f | 来源:发表于2018-12-02 21:15 被阅读0次

    Collection架构

    image.png

    Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。

    1. Collection包含了List和Set两大分支。
      1).List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。
      List的实现类有LinkedList, ArrayList, Vector, Stack。
      2). Set是一个不允许有重复元素的集合。
      Set的实现类有HashSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。

    2. Map是一个映射接口,即key-value键值对。Map中的每一个元素包含“一个key”和“key对应的value”。
      AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap。
      Hashtable虽然继承于Dictionary,但它实现了Map接口。

    Collection的定义如下:

    public interface Collection<E> extends Iterable<E> {}
    

    Collection所有 API

    abstract boolean         add(E object)
    abstract boolean         addAll(Collection<? extends E> collection)
    abstract void            clear()
    abstract boolean         contains(Object object)
    abstract boolean         containsAll(Collection<?> collection)
    abstract boolean         equals(Object object)
    abstract int             hashCode()
    abstract boolean         isEmpty()
    abstract Iterator<E>     iterator()
    abstract boolean         remove(Object object)
    abstract boolean         removeAll(Collection<?> collection)
    abstract boolean         retainAll(Collection<?> collection)
    abstract int             size()
    abstract <T> T[]         toArray(T[] array)
    abstract Object[]        toArray()
    

    List

    public interface List<E> extends Collection<E> {}
    

    List相比Collection新增的接口

    abstract void                add(int location, E object)
    abstract boolean             addAll(int location, Collection<? extends E> collection)
    abstract E                   get(int location)
    abstract int                 indexOf(Object object)
    abstract int                 lastIndexOf(Object object)
    abstract ListIterator<E>     listIterator(int location)
    abstract ListIterator<E>     listIterator()
    abstract E                   remove(int location)
    abstract E                   set(int location, E object)
    abstract List<E>             subList(int start, int end)
    

    Set

    public interface Set<E> extends Collection<E> {}
    

    Set的API和Collection完全一样。

    AbstractCollection

    public abstract class AbstractCollection<E> implements Collection<E> {}
    

    AbstractCollection是一个抽象类,它实现了Collection中除iterator()和size()之外的函数。
    AbstractCollection的主要作用:它实现了Collection接口中的大部分函数。从而方便其它类实现Collection,比如ArrayList、LinkedList等,它们这些类想要实现Collection接口,通过继承AbstractCollection就已经实现了大部分的接口了。

    AbstractList

    public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {}
    

    AbstractList是一个继承于AbstractCollection,并且实现List接口的抽象类。它实现了List中除size()、get(int location)之外的函数。
    AbstractList的主要作用:它实现了List接口中的大部分函数。从而方便其它类继承List。
    另外,和AbstractCollection相比,AbstractList抽象类中,实现了iterator()接口。

    AbstractSet

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

    AbstractSet是一个继承于AbstractCollection,并且实现Set接口的抽象类。由于Set接口和Collection接口中的API完全一样,Set也就没有自己单独的API。和AbstractCollection一样,它实现了Set中除iterator()和size()之外的函数。
    AbstractSet的主要作用:它实现了Set接口中的大部分函数。从而方便其它类实现Set接口。

    相关文章

      网友评论

          本文标题:Java集合框架(二)— Collection

          本文链接:https://www.haomeiwen.com/subject/haajcqtx.html