java集合详解

1.java集合是什么?

java集合实际上是一种经常被运用到的java类库,其中提供了已经实现的的数据结构,省去了程序员再次编写数据结构的事情.在Leetcode中经常会被用到,有很重要的作用.

java集合详解_第1张图片

集合体系

我们发现,无论是Set和List都是继承于 Collection 接口,实现 Collection 之中的方法,而他们又衍生出了 HashSet , LinkedList 等等我们经常使用的数据结构.有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的Java深入学习路线图,以及开发工具包,【戳我进入】学习裙。

但是真相并不是如此的简单.

对于 Collection 接口的实现,其实是由 AbstractCollection 类完成的.

此类提供了 Collection 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。

Collection 中需要实现的的方法:

boolean add(E o) 确保此 collection 包含指定的元素(可选操作)。 
 boolean addAll(Collection c) 
          将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。 
 void clear() 
          移除此 collection 中的所有元素(可选操作)。 
 boolean contains(Object o) 
          如果此 collection 包含指定的元素,则返回 true。 
 boolean containsAll(Collection c) 
          如果此 collection 包含指定 collection 中的所有元素,则返回 true。 
 boolean equals(Object o) 
          比较此 collection 与指定对象是否相等。 
 int hashCode() 
          返回此 collection 的哈希码值。 
 boolean isEmpty() 
          如果此 collection 不包含元素,则返回 true。 
 Iterator iterator() 
          返回在此 collection 的元素上进行迭代的迭代器。 
 boolean remove(Object o) 
          从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。 
 boolean removeAll(Collection c) 
          移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。 
 boolean retainAll(Collection c) 
          仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。 
 int size() 
          返回此 collection 中的元素数。 
 Object[] toArray() 
          返回包含此 collection 中所有元素的数组。 
 T[] toArray(T[] a) 
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

AbstractCollection 类实现的方法:

boolean add(E o) 
          确保此 collection 包含指定的元素(可选操作)。 
 boolean addAll(Collection c) 
          将指定 collection 中的所有元素添加到此 collection 中(可选操作)。 
 void clear() 
          从此 collection 中移除所有元素(可选操作)。 
 boolean contains(Object o) 
          如果此 collection 包含指定的元素,则返回 true。 
 boolean containsAll(Collection c) 
          如果此 collection 包含指定 collection 中的所有元素,则返回 true。 
 boolean isEmpty() 
          如果此 collection 不包含元素,则返回 true。 
abstract  Iterator iterator() 
          返回在此 collection 中的元素上进行迭代的迭代器。 
 boolean remove(Object o) 
          从此 collection 中移除指定元素的单个实例(如果存在)(可选操作)。 
 boolean removeAll(Collection c) 
          从此 collection 中移除包含在指定 collection 中的所有元素(可选操作)。 
 boolean retainAll(Collection c) 
          仅在此 collection 中保留指定 collection 中所包含的元素(可选操作)。 
abstract  int size() 
          返回此 collection 中的元素数。 
 Object[] toArray() 
          返回包含此 collection 中所有元素的数组。 
 T[] toArray(T[] a) 
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型是指定数组的类型。 
 String toString() 
          返

出了一个 hashcode 方法, AbstractCollection 类实现了几乎所有的功能.

而 AbstractCollection 类又有三个不同的子类 AbstractList , AbstractQueue , AbstractSet .我们从名字就可以知道,这就是三种不同的数据结构.于是这样基本就可以分析出来.

集合类的构建框架如下.

java集合详解_第2张图片java集合详解_第3张图片

所有的集合都是依靠这种方式构建的,用一个抽象类实现接口,然后再用集合类去实现这些抽象类,来完成构建集合的目的.

java集合详解_第4张图片

这是完整的构建图.

这其实是为了大家有一个思想,就是在Collection实现的方法,在继承实现他的各个集合中也都会实现.

如下是本文的目录:

java集合详解_第5张图片

(一) Iterator接口--迭代器

{
   
 boolean hasNext()  如果仍有元素可以迭代,则返回 true。 
 E next()    返回迭代的下一个元素。 
 void remove()  删除
     default void forEach 实现了迭代器接口的类才可以使用forEach
}

这几个方法有着很重要的意义:

  1. 所有实现 Collection 接口(也就是大部分集合)都可以使用forEach功能.

  2. 通过反复调用 next() 方法可以访问集合内的每一个元素.

  3. java迭代器查找的唯一操作就是依靠调用next,而在执行查找任务的同时,迭代器的位置也在改变.

  4. Iterator迭代器remove方法会删除上次调用next方法返回的元素.这也意味之remove方法和next有着很强的依赖性.如果在 调用remove之前没有调用next是不合法的 .

    这个接口衍生出了,java集合的迭代器.

    java集合的迭代器使用

下面是迭代

你可能感兴趣的:(java,队列,数据结构)