目录
一、集合的概念
java 中针对数组的缺陷,提供了一种比数组灵活、使用方便的接口和类,它们位于 java.util 包,称为集合框架。
二、java.lang.Iterable
Iterable 接口,凡是实现了此接口的对象都能成为 for-each-loop 的目标。
for(数据类型 变量名 : 循环对象){ //循环体 } //变量是循环对对象的值,不是索引
iterator() 方法返回一个类型的迭代器。
它的子类有很多,我们现在主要研究 java.util.Collection
三、java.util.Collection
Collection 是集合层次结构中的根接口。集合表示一组对象,对象称为集合的元素。有些集合允许重复元素,有些则不允许。 有些是有序的,有些是无序的
(不保证顺序)
public interface Collection<E> extends Iterable<E>
从类的声明我们可以看到, Collection 接口继承了 Iterable 接口。也就意味着,实现了Collection 接口的类也间接实现了 Iterable 接口,也就是说它们都能
作为 for-each-loop 的循环对象。
方法名 | 返回值 | 描述 |
---|---|---|
add(E e) | boolean | 添加元素 |
addAll(Collection<?extends E> c) | boolean | 将集合c中的所有元素添加此集合中 |
clear() | void | 清除所有元素 |
contains(Object o) | boolean | 集合中是否包含此元素 |
containsAll(Collection<?>c) | boolean | 集合中是否包含c集合中的所有元素 |
isEmpty() | boolean | 集合中是否有元素,如果没有返回true |
iterator() | Iterator<E> | 继承自Iterable接口,返回集合的迭代器 |
remove(Object o) | boolean | 删除集合中的某个元素 |
removeAll(Collection<?>c) | boolean | 删除集合c中包含的所有元素 |
size() | int | 返回此集合中的元素数 |
toArray() | Object[] | 返回一个包含此集合中所有元素的数组 |
1.队列(Queue)
public interface Queue<E> extends Collection<E>
设计用于在处理之前保留元素的集合。 除了基本的 Collection 操作之外,队列还提供额
外的插入,提取和检查操作。
不可以存 null
2.Deque(双端队列)
public interface Deque<E> extends Queue<E>
继承了 Queue ,支持两端(首尾)元素插入和移除的线性集合。
3.Queue和Deque方法对比
四、set
public interface Set<E> extends Collection<E>
不包含重复元素的集合, 可以存 null 。
抽象方法大多是继承自 Collection 的,所以不做单独说明。
of 方法和 copyOf ,都是 static 方法返回一个不可修改的 Set 集合。
不可修改 Set 集合
它们是不可修改的。不能添加或删除元素。
不允许 null 元素。尝试使用 null 元素创建它们会导致 NullPointerException
常用子类, HashSet 和 TreeSet
五、List
有序集合(也称为序列 )。 该集合用户可以精确控制列表中每个元素的插入位置。 用户
可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素
List 通常允许重复的元素、允许 null 元素
主要抽象方法
六、Vector
Vector 类实现了可扩展的对象数组。 像数组一样,它包含可以使用整数索引访问的组件。 但是, Vector的大小可以变化。
Vector 是同步的,是线程安全的。
Vector 继承了 AbstractList 类,实现了 List 接口
内部是使用数组存储数据,也就是说在内存中开辟一个连续的空间
默认大小是10,当容量不足时,默认扩容方式是按倍增长( capacity * 2)
可以自定义默认容量以及每次扩展多少容量子类,
七、Stack
Stack 类代表后进先出(LIFO)堆栈的对象, Stack 继承自 Vector 所以它有所有 Vector 中的方法。