集合框架List
集合框架List
集合框架List(ArrayList特有方法、特有迭代器、具体对象特点、增长因子论证)
List 元素是有序的、可重复ArrayList、Vector默认初始容量为10
ArrayList:线程不安全,查询速度快
底层数据结构是数组结构
增长因子为1.5:
如 ArrayList的容量为10,一次扩容后是容量为15
Vector:线程安全,但速度慢 线程同步
底层数据结构是数组结构
增长因子为2:即当 元素个数 超过 容量长度 时,进行扩容
如 Vector的容量为10,一次扩容后是容量为20
Linkedlist 链表结构 增删快,查询慢 没有连续下标
Set(集) 元素无序的、不可重复。
扩容增量:当元素个数超过容量长度时进行扩容 ,容量长度*加载因子的系数
ArrayList特有方法
List:凡是可以操作角标的方法都是该体系所特有的方法
增
Add(index,element)在列表的指定位置插入指定元素
删
Remove(index)移除列表中指定位置的元素
改
Set(index,element)用指定元素替换列表中指定位置的元素
查
Get(index)返回列表中指定位置的元素
subList(from,to) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图
listIterator() 返回此列表元素的列表迭代器
特有迭代器
ListIterator是Iterator的子接口,使用迭代器遍历集合
Iterator与ListIterator的区别:
1 .iterator()方法在set和list接口中都有定义,但是ListIterator()仅存在于list接口中(或实现类中)。
2 .ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有
hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。
3.ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能等。
list集合的调优
增长因子论证
ArrayList增长因子的初始值为10,当大于十时就会增大,也可以自己定义初始值,代码为:ArrayList li=new ArrayList<>(50); 50就是自己设置的初始值
集合框架Vector
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。Vector 是同步的,可用于多线程。Vector 继承了AbstractList,实现了List;所以,它是一个队列数组,支持相关的添加、删除、修改、遍历等功能。
Iterator.remove()与Collection.remove()的区别
迭代器与集合是两个对象 如果在迭代器中调用集合的remove方法 会报currentModifyException