zoukankan      html  css  js  c++  java
  • Java集合包(二)——Collection接口及其子接口、抽象类 原理分析

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/13560125.html

     

    一:宏观架构

      

      拆解记忆如下:

      1、接口: Collection接口是集合顶层接口,定义了集合类中最基本的一系列操作方法;

             Collection接口有两个主要的分支子接口,List 和 Set。

             List接口在Collection接口的基础上,新增了一系列特有的数组操作相关方法;

             Set接口与Collection接口一致,没有新增特有的操作方法;

      2、抽象类:AbstractCollection抽象类实现了Collection接口中的大部分方法;

             AbstractList抽象类继承了AbstractCollection并实现了List接口,基于AbstractCollection已实现的大部分集合方法的基础上,又实现了List接口中大部分新增的方法;

             AbstractSet抽象类继承了AbstractCollection并实现了Set接口,针对Set集合的特有属性,对AbstractCollection中的某些实现方法进行了重写;

      3、迭代接口:Collection中的iterator()方法会返回一个Iterator接口,定义了对通用集合类进行遍历的一系列方法;

                              ListIterator继承了Iterator接口,在List接口的ListIterator()方法返回一个ListIterator,额外增加了针对List进行遍历的一系列方法。

    二:Collection接口

      它是集合类的最顶层接口,对集合操作进行了高度抽象,定义了集合的基本操作:添加、删除、清空、遍历、包含判断、判断是否为空、获取大小等。

    // 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接口

      继承于Collection接口,包含了Collection中的全部方法接口;同时,它定义了自己额外的API。主要有“添加、删除、获取、修改指定位置的元素”、“获取List中的子队列”等。

    // 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()
    // 相比与Collection,List新增的API:
    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接口

      继承于Collection的接口,API和Collection完全一样,没有新增额外的接口。

    // Set的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()

    五:AbstractCollection抽象类

      它实现了Collection接口中,除iterator()和size()之外的所有集合操作方法。

      

    六:AbstractList抽象类

      继承于AbstractCollection,并且实现List接口。

      它实现了List接口中的大部分函数,同时,在AbstractCollection的基础上实现了iterator()方法。

    七:AbstractSet抽象类

      它实现了Set接口中的大部分函数,对于某些Set操作特有的,在AbstractCollection的基础上进行了重写。

    八:Iterator接口

      它是集合的迭代器,提供了集合遍历的三个方法,包括:是否存在下一个元素、获取下一个元素、删除当前元素。

    // Iterator的API
    abstract boolean hasNext()
    abstract E next()
    abstract void remove()

    九:ListIterator接口

      继承于Iterator的接口,它是List特有的迭代器,在Iterator的三个方法基础上,新增了 添加、是否存在上一个元素、获取上一个元素等API。

    // 继承于Iterator的接口
    abstract boolean hasNext()
    abstract E next()
    abstract void remove()
    
    // ListIterator新增的API接口
    abstract void add(E object)
    abstract boolean hasPrevious()
    abstract int nextIndex()
    abstract E previous()
    abstract int previousIndex()
    abstract void set(E object)
  • 相关阅读:
    socket (一)
    yield生成器及字符串的格式化
    python模块(json和pickle模块)
    python标准模块(time、datetime及hashlib模块)
    python标准模块(os及sys模块)
    python模块简介
    python --> 正则表达式
    python --> 递归 以及装饰器
    python基础知识(四)
    python基础知识(三)
  • 原文地址:https://www.cnblogs.com/ygj0930/p/13560125.html
Copyright © 2011-2022 走看看