20201007+袁鑫

学习日志:

知识总结:

集合

java中针对数组的缺陷,提供了一种比数组灵活、使用方便的接口和类,他们位于java.util包,称为集合框架。

java中的集合框架主要从三个方面入手:

  • java.lang.iterable
  • Collection
  • Map
java.lang.Iterable

Iterable接口,凡是实现了此接口的对象都能成为for-each-loop的目标。

Iterator()方法返回一个类型的迭代器。

它的子类有很多,我们现在主要研究java.util.Collection

java.util.Collection

public interface Collection<E> extends Iterable<E>

从类的声明我们可以看到,Collection接口继承了Iterable接口。也就就意味着,实现了Collection接口的类也简介实现了Iterable接口,也就是说他们都能作为for-each-loop的循环对象。

Collection 是集合层次结构中的根接口。集合表示一组对象,称为其元素。有些集合允许重复 元素,有些则不允许。 有些是有序的,有些是无序的

Queue(队列)

设计用于在处理之前保留元素的集合。除了基本的Collection操作之外,队列还提供额外的插入,提取和检查操作。

不可以存null

Deque(双端队列)

继承了Queue,支持两端元素插入和溢出的线性集合。

Set

不包含重复元素的集合。

常用子类:HashSet和TreeSet

List

有序集合(也称为序列)。该集合用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素

List通常允许重复的元素、允许null元素

Vector

Vector类实现了可扩展的对象数组。像数组一样,它包含可以使用整数索引访问的组件。但是Vectorde的大小可以变化。

Vector是同步的,是线程安全的。

Vector继承了AbstractList类,实现了List接口

默认大小是10,当容量不足时,默认扩容方式是按倍增长

子类:Stack

Stack

Stack类代表后进先出(LIFO)堆栈的对象,Stack继承自Vector 所以它有所有Vector中的方法。

image-20201007214137934

List集合

List 是一个有序集合。可以存储一组不唯一、有序的对象、可以存 null

List 在 JDK 9 中新增 of() 方法,作用是返回一个 List 对象。 of(E…e) 可以接受传参,但是不能 传 null 。否则会抛出 NullPointerException 。

ArrayList

ArrayList 是 AbstractList 类的子类,同时实现了 List 接口。

ArrayList 不是同步的,也就是说是非线程安全的。

ArrayList 内部是使用数组存储数据,也就是说在内存中开辟一个连续的空间。是一个可变的数组, 可以向 ArrayList 中添加不同类型数据,这些数据都将转换 Object 类型存储。

  • 初始化容量是 10
  • 存储数据的对象是 Object[] elementData
  • 当容量不足时,扩容1.5倍

注意: contains 方法在判断对象时,对象的类中要重写 equals 方法。
Arrays.asList() 方法返回一个只读集合

标签

评论

this is is footer