目录
6. ArrayList、LinkedList、Vector区别
7.思维导图
1.UML
统一建模语言
2.Collection接口
1. 集合框架的顶级接口
2. 是Set和List的父接口
3. 但不是Map的父接口
3.List接口
1 特点:有序、对象可以重复
2 遍历方式
2.1 下标
2.2 foreach(>=jdk1.5)
2.3 迭代器Iterator(原理)
hasNext()
next()
3 List优化
初始容量10,负载因子0.5
public static void main(String[] args) {
List list = new ArrayList();
list.add("张3");
list.add("李4");
list.add("王5");
list.add("朱6");
//list集合的遍历方式
//1.下标遍历 for循环
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("------------------------");
//2.foreach循环(jdk1.5只后才有)
for (Object object : list) {
System.out.println(object);
}
System.out.println("------------------------");
//3.迭代器
Iterator it = list.iterator();
/*it.hasNext();//返回类型为boolean
it.next();//获取下一个元素,并移动迭代器位置
*/
while(it.hasNext()) {
Object next = it.next();
System.out.println(next);
}
//Set set = null;
System.out.println("------------------------");
ListIterator lit = list.listIterator();
while(lit.hasNext()) {
Object next = lit.next();
System.out.println(next);
}
System.out.println("------------------------");
while(lit.hasPrevious()) {
Object previous = lit.previous();
System.out.println(previous);
}
}
public static void main(String[] args) throws Exception {
List list = new ArrayList(50);
//list集合 实现类 arraylist实际是一个object数组
// print(list);
// for (int i = 1; i <50; i++) {
// list.add(i);
// print(list);
// }
}public static void print(List ls) throws Exception {
//反射
//1.获取类对象
Class clazz = ls.getClass();
//获取属性对象
Field Field = clazz.getDeclaredField("elementData");
//打开属性限制
Field.setAccessible(true);
Object[] object = (Object[])Field.get(ls);
System.out.println("数组长度为:"+object.length);
}
4.泛型
JDK1.5之后
以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
5.装箱、拆箱(案例:快递)
值类型->引用类型 装箱
引用类型->值类型 拆箱
jdk1.5之后引入了自动装箱及自动拆箱功能
//值类型转换成引用类型 装箱
int i = 1;
Integer j = i;
//值类型转换成引用类型 拆箱
Integer k = 1;
i = k;
k.intValue();
6.ArrayList、LinkedList、Vector区别
ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢
LinkedList:以链表的结构存储数据,查询慢、增删改快
Vector:增删改查都慢,已过时,同步.线程安全