1. Collection接口
1.1 集合框架的顶级接口
1.2 是Set和List的父接口
1.3 但不是Map的父接口
集合中只能添加引用类型数据
2. List接口
2.1 特点:有序、对象可以重复
2.2 遍历方式
2.2.1 下标
2.2.2 foreach(>=jdk1.5)
2.2.3 迭代器Iterator(原理)
2.3 List优化
初始容量10,负载因子1.5
指定初始容量
2.4 List元素删除
List特点:不唯一;有序。
* 1)不唯一:可以重复添加元素
* 2)有序:添加元素的顺序与输出的顺序一致
*/
List lst=new ArrayList();
lst.add("zs");
lst.add("ls");
lst.add("ww");
lst.add("zl");
lst.add("zs");
//jdk1.8新特性输出
// lst.forEach(System.out::println);
/*
* 4、List遍历集合的方式(3种)
* 1)for下标
*/
// System.out.println("-------1)for下标-----------");
// for (int i = 0; i < lst.size(); i++) {
// System.out.println(lst.get(i));
// }
// //2)foreach
// System.out.println("-----2)foreach-----");
// for (Object obj : lst) {
// System.out.println(obj);
// }
// //3)Iterator迭代器
// System.out.println("-------------3)Iterator迭代器------------");
// //获取迭代器
// Iterator it=lst.iterator();
// //hasNext():判断下一个元素是否存在,不移动下标
// //next() :移动下标并取出当前元素,再次调用hasNext方法判断下一个元素是否存在
// //循环遍历
// while(it.hasNext()) {
// System.out.println(it.next());
// }
/*
* 5、List删除方式(3种+1)
* 1)for正向删除
* 2)for逆向删除
* 3)iterator迭代器
* clear清空
*/
System.out.println("删除之前的List集合大小:"+lst.size());
/*
* 正向删除
//第一次删除:i=0;lst.remove(0) a
//第二次删除:i=1;lst.remove(1) c
//第三次删除:i=2;2<2
int len=lst.size();
for (int i = 0; i <len; i++) {
lst.remove(0);
}
*/
/*逆向删除
int len=lst.size()-1;//五个元素最大下标四
for (int i = len; i >=0; i--) {
lst.remove(i);
}
*/
//获取迭代器
/*
ListIterator it=lst.listIterator();
while(it.hasNext()) {
//先移动下标,再删除元素
it.next();
it.remove();
}
*/
System.out.println("删除之后的List集合大小:"+lst.size());
}
3. 泛型
JDK1.5之后
以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
/**
* 泛型:以类型作为参数的类叫做泛型
* 作用:提高程序的健壮性,简化代码
* 泛型的默认数据类型是Object
* jdk1.5之后
*/
/*
List lst=new ArrayList<>();
lst.add(1);
lst.add(2);
lst.add(3);
lst.add(4);
lst.add(6);
//获取迭代器
// Iterator it=lst.iterator();
//循环遍历
ListIterator<Integer> it =lst.listIterator();
while(it.hasNext()) {
//获取元素
// Object val=it.next();
//类型转换
// int num=Integer.parseInt(val.toString());
int num=it.next();
//获取偶数
// if(num%2==0)
System.out.println(num);
}
4. 装箱、拆箱
值类型->引用类型 装箱
引用类型->值类型 拆箱
jdk1.5之后引入了自动装箱及自动拆箱功能
*/
/**
* 装箱,拆箱
* 装箱:值类型->引用类型
* 拆箱:引用类型->值类型
* 八大类型的包装类都属于引用类型
*/
//装箱
int a=1;//值类型
Integer a1=new Integer(a);
//拆箱
Float f=new Float(1.5f);
float folat=f.floatValue();
5. ArrayList、LinkedList、Vector区别
ArrayList:以连续的数组结构存储数据,查询快(下标)、增删改慢
LinkedList:以链表的结构存储数据,查询慢、增删改快
Vector:增删改查都慢,已过时