存储多个同一类型的数据的容器 — 大小不固定
- 泛型 - 在集合中的作用是用于表示元素类型。- 由于泛型的限制,集合中只能存储对象。
String[] arr; arr的数据类型是数组,元素类型是String
Collection c; c的数据类型是集合,元素类型是String
5,7, 2 — Collection
Collection
Collection的重要方法的使用:
Collection<String> c = new ArrayList<String>();
// 添加元素
c.add("gwe");
c.add("hred");
c.add("hrd");
c.add("ater");
// 将集合转化为数组
// String[] os = (String[]) c.toArray();
// Object[] os = c.toArray();
// for (Object o : os) {
// System.out.println(((String) o).length());
// }
String[] strs = c.toArray(new String[0]);
for (String str : strs) {
System.out.println(str.length());
}
// 获取集合中的元素个数
// System.out.println(c.size());
// 清空集合
// c.clear();
// 判断集合是否为空
// System.out.println(c.isEmpty());
// 判断元素是否存在
// System.out.println(c.contains("hrd"));
// System.out.println(c.contains("aft"));
// 从集合中移除指定的元素
// c.remove("gwe");
// 如果元素不存在,会直接跳过
// c.remove("age");
List - 列表
1.概述
有序(保证元素存入顺序)的集合—存在了下标,因此
够通过下标来操作列表中的元素。
ArrayList - 顺序表
底层是依靠的数组来存储的数据。默认初始容量是10,每次扩容是在原来的基础上增加一半,基于右移。
LinkedList - 链表
基于节点(Node)来实现的。利用节点来存储数据以及维系链表之间每一个节点的关系。内存空间不连续。增删操作相对简单,查询操作相对复杂。是一个线程不安全的列表
考虑:如果在增删和查询的次数相差不多的情况下,使用ArrayList还是LinkedList? — LinkedList
Vector - 向量
最早的列表,依靠数组来存储数据,初始默认是10,每次扩容默认增加一倍。是一个线程安全的列表
Stack - 栈
继承了Vector。遵循后进先出/先进后出的原则。最先放入栈中的元素 — 栈底元素,最后放入栈中的元素 — 栈顶元素。将元素放入栈中 — 入栈/压栈,将元素从栈中取出 — 出栈/弹栈