容器
1、泛型
泛型是规定集合存储数据的类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)
表示 : <数据类型> 数据类型只能为引用数据类型
位置 : 定义在数据类型的后面
ArrayList<String> list = new ArrayList();
有序: 存放的顺序与内部真实存储的顺序相同
注意: 存储的数据为整数的时候,默认以索引优先
2、List
List:列表,是一个接口。它的实现类常用的有LinkedList、ArrayList和Vector。
public class List {
public static void main(String[] args) {
List<String> list = new ArrayList();
list.add("abc");
list.add("def");
list.add("ghi");
list.add("123");
System.out.println(list);
//输出结果为[abc, def, ghi, 123]
LIst集合遍历方式:
1)普通for循环
2)增强for循环
3)iterator迭代器
4)listIterator 列表迭代器
List接口的实现类:有序,可重复
3、ArrayList
ArrayList是采用数组实现的列表,因此它支持随机访问,不适合频繁删除和插入
操作。对于需要经常进行查询的数据建议采用此结构。
ArrayList与java数组的一个大的区别是ArrayList能够自动扩容
ArrayList不支持同步,相对效率高
4、Vector 向量
Vector用法和ArrayList用法很相似,它们的区别在于Vector是线程同步的而且Vector有另外的遍历方式
Vector与 ArrayList之间的区别:
1.同步问题
ArrayList 线程不安全/不同步,相对效率高
Vector 线程安全/同步
2.扩容问题
ArrayList 每次扩容原容量的1.5倍,更有利于节约内存
Vector 每次扩容原容量的2倍
5、LinkedList
底层结构: 双向链表
特点:
根据索引查询效率低
做增删效率高
应用场景:
大量做增删少量做查询的时候适合使用