List接口
1 特点:(3有产品)
有序、对象可以重复(不唯一)、有下标
有序:元素添加是顺序与输出的顺序一致
不唯一: 允许添加重复元素
下标:元素的一种标识
2 遍历方式
2.1 通过下标遍历
for(int i=0; i<集合名称.size(); i++){
System.out.println(集合名称.get(i));
}
2.2 通过foreach(>=jdk1.5) 需要jdk在1.5及以上版本才能使用
for(Object o : 集合名称){
System.out.println(o);
}
2.3 通过list的依赖迭代器(Iterator)来遍历
获取List集合的迭代器
listIterator(或Iterator) it = 集合名称.listIterator(或Iterator)
遍历集合
hasNext():判断集合中的下一个元素是否存在,返回boolean
next():移动下标,并取出元素
while(it.hasNext) {
System.out.println( it.next() );
}
3 List优化(面试题)
初始容量为10,负载因子1.5
3.1)初始容量:10
3.2)负载因子(扩容比例):1.5
3.3)扩容公式:容器大小*负载因子 (容器大小不是初始容量)
注意向下取整(舍弃小数点后的数)
例如:
101.5 = 15 第一次扩容
151.5 = 22.5(22) 第二次扩容
221.5 = 33 第三次扩容
4 List元素删除
4.1)iterator删除方式(迭代器删除)
获取List集合的迭代器
listIterator(或Iterator) it = 集合名称.listIterator(或Iterator)
while(it.hasNext) {
//注意:先移动下标,在删除!!!
//注意:先移动下标,在删除!!!
//注意:先移动下标,在删除!!!
//移动下标
it.next();
//删除元素
it.remove();
}
4.2)for循环反向删除
for(int i = 集合名称.size(); i>=0; i–){
集合名称.remove(i);
}
4.2) for循环删除,永远删除第一个,但要定义长度变量
int size = 集合名称.size()
for(int i = 0; i<size; i–){
集合名称.remove(0);
}
4.3)集合名称.clear()
清空集合中的所有元素
—————————————————————————————————————————————
泛型
- JDK1.5及以上
以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
装箱、拆箱
java八大基础类型 int / short / long / byte / char / boolean / float / double
引用类型:指八大基础类型的封装类
值类型->引用类型 装箱
int a = 10;
Integer b = new Integer(a);
引用类型->值类型 拆箱
int c = b.intValue();
jdk1.5及之后引入了自动装箱及自动拆箱功能
—————————————————————————————————————————————
面试题
ArrayList、LinkedList、Vector区别
ArrayList: 以连续的数组结构存储数据,查询快(下标)、增删改慢
LinkedList: 以链表的结构存储数据,查询慢、增删改快
Vector: 增删改查都慢,已过时