Java集合框架(二)— Collection

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java 集合系列02之 Collection架构 2018年11月11日 14:17:55qq_群9474051...
    废弃的root阅读 370评论 0 2
  • Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位...
    聂叼叼阅读 552评论 0 2
  • 作为集合框架层级的根接口,Collection接口抽象了一组元素的集合,最大化地提供了通用的集合操作方法。某些集合...
    清风流苏阅读 589评论 0 0
  •   在之前的学习中我们将Java的集合框架做了一个大致的分类,对集合的结构有一定的了解,现在便是由表及里,我们深入...
    卡农Canon阅读 450评论 0 1
  • 坐在去学校的火车上,我的思绪又开始像那断了线的风筝漫无目的地游荡。 我想起了送我去车站的爷爷,前一秒他还呆在我的身...
    是桃桃桃子呀阅读 310评论 4 4

友情链接更多精彩内容