容器入门篇:
自定义容器
Java的容器主要分为2个大类,即Collection和Map。Collection代表着集合,类似数组,只保存一个数字。而Map则是映射,保留键值对两个值。
List(对付顺序的好帮手): 存储的元素是有序的、可重复的。
Set (注重独一无二的性质):存储的元素是无序的、不可重复的。
Queue (实现排队功能的叫号机):按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。
Map (用 key 来搜索的专家) :使用键值对(key-value)存储,类似于数学上的函数 y=f(x),“x” 代表 key,“y” 代表 value,key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。
java集合
集合的继承关系
|-- Collection
|-- List // 线性表
|-- Set // 哈希表
|-- Queue // 队|-- Map // 键值对,映射
注意:容器中,不能保存基本数据类型!!!
如果一定要使用基本数据类型,则需要使用它们的包装类
注意:删除基本数据类型,需要手动装箱
否则,int默认是下标,而不是数据本书
ArrayList源码解析:
1、Vector默认的容量是10;
2、Vector是线程安全的容器,操作方法都加了同步锁
3、ArrayList是非线程安全的容器
4、ArrayList根据调用不同的构造函数,初始化容器不同
如果使用无参的构造,默认容量是0,节约内存,
一旦添加元素,会发生第一次扩容,默认容量为10;
如果有参的构造,则传递为多少,默认就是多少。
ArrayList alist = new ArrayList(); // 默认容量0
ArrayList alist = new ArrayList(8); // 默认容量8
注意: 如果在开发过程中,数据大小基本确定,建议使用有参的构造函数,减少频繁扩容,提高性能当然如果不能确定的话,可以使用无参的构造。