1.参考思维导图
1. Collection接口
1.1 集合框架的顶级接口
1.2 是Set和List的父接口
1.3 但不是Map的父接口
1.4集合中只能添加引用类型数据
2. List接口
2.1 特点:有序、对象可以重复
2.1.2:参考代码
public static void main(String[] args) { //List集合特点:1有序 List ls = new ArrayList(); ls.add("a"); ls.add("b"); ls.add("c"); ls.add("d"); for (Object object : ls) { System.out.println(object); } //List集合的特点2.元素可以重复 ls.add("a"); System.out.println("---------"); for (Object object : ls) { System.out.println(object); } ls.add(1); //八大基本数据类型 int float byte double short char boolean long }
2.2 遍历方式
2.2.1 for循环遍历下标//List集合的遍历方式 1.下标遍历 for循环 for (int i = 0; i < ls.size(); i++) { System.out.println(ls.get(i)); }
2.2.2 foreach遍历
//List 集合遍历方式2.foreach jdk1.5之后才有的 for (Object object : ls) { System.out.println(object); }
2.2.3 迭代器Iterator(原理)
hasNext()
next()System.out.println("------迭代器-----"); //List集合的遍历方式3.迭代器 Iterator it = ls.iterator(); // it.hasNext(); //返回值为布尔类型 // it.next(); //获取下一个元素,并且移动迭代器位置 while(it.hasNext()) { Object next = it.next(); System.out.println(next); }
2.3 List优化
初始容量10,负载因子0.5指定初始容量
public static void main(String[] args) throws Exception{ List ls = new ArrayList(); //List 实现类 ArrayList实际上就是一个Object数组 print(ls); for (int i = 1; i <=34; i++) { ls.add(i); print(ls); } } //静态方法 实例方法 静态方法不属于类 实例方法属于对象 public static void print(List list) throws Exception{ //反射 //1.获取类对象 Class clazz = list.getClass(); //2.获取对象属性 Field field = clazz.getDeclaredField("elementData"); //3.打开属性限制 field.setAccessible(true); Object[] object = (Object[])field.get(list); System.out.println("数组长度为:"+object.length); }
2.4 List元素删除
iteratorpublic static void main(String[] args) { List ls = new ArrayList(); ls.add("a"); ls.add("b"); ls.add("c"); ls.add("d"); System.out.println(ls.size()); //List集合的删除 顺序删除 有问题 不能全部删除 /*for (int i = 0; i <ls.size(); i++) { ls.remove(i); }*/ //List 集合的删除 倒序删除 /*for (int i = ls.size()-1; i >=0; i--) { ls.remove(i); }*/ //List 集合的删除 迭代器 Iterator it = ls.iterator(); while(it.hasNext()) { Object next = it.next(); it.remove(); } System.out.println(ls.size()); }
3. 泛型
JDK1.5之后
以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
4. 装箱、拆箱(案例:快递)
值类型->引用类型 装箱
引用类型->值类型 拆箱
jdk1.5之后引入了自动装箱及自动拆箱功能//值类型 转换成引用类型 装箱 int i = 1; Integer j = i; //引用类型转换成值类型 拆箱 Integer k = 1; i = k; i = k.intValue();
5. ArrayList、LinkedList、Vector区别
5.1ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢
5.2LinkedList:以链表的结构存储数据,查询慢、增删改快
5.3Vector:增删改查都慢,已过时,同步.线程安全