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中的方法。
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() 方法返回一个只读集合
近期评论