一、list集合与map集合
二、 Collection接口
1 集合框架的顶级接口
2 是Set和List的父接口
3 但不是Map的父接口
三、list集合特点
1、有序且可重复
//list集合特点:1有序
list.add("兰陵王");
list.add("小乔");
list.add("后羿");
list.add("妲己");
for (Object object : list) {
System.out.println(object);
}
//list集合特点2:可以有重复的元素
list.add("小乔");
System.out.println("---------------");
for (Object object : list) {
System.out.println(object);
}
效果
2、三种遍历方式
package com.zking.dog;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Demo02 {
public static void main(String[] args) {
List list=new ArrayList();
list.add("兰陵王");
list.add("小乔");
list.add("后羿");
list.add("妲己");
//list遍历的方式1:下标
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("---------------");
//list遍历的方式2:foreach jdk1.5之后有的
for (Object object : list) {
System.out.println(object);
}
System.out.println("-----------");
//list遍历方式3:迭代器
Iterator it=list.iterator();
// it.hasNext();//返回值为boolean类型
// it.next();//获取下一个元素并且移动迭代器的位置
while(it.hasNext()) {
Object next=it.next();
System.out.println(next);
}
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);
}
}
}
效果
3、list集合删除的俩种方法
List list=new ArrayList();
//list集合特点:1有序
list.add("兰陵王");
list.add("小乔");
list.add("后羿");
list.add("妲己");
//倒序删除
// for (int i = list.size()-1; i >=0; i--) {
// list.remove(i);
// }
//
// System.out.println(list.size());
//迭代器删除
Iterator it=list.iterator();//调用迭代器
while(it.hasNext()) {
it.next();//移动迭代器的位置
it.remove();
}
System.out.println(list.size());
效果
4、反射
public static void print(List list) throws Exception {
//反射
//1.获取类对象
Class clazz = list.getClass();
//2.获取属性对象
Field filed = clazz.getDeclaredField("elementData");
//3.打开属性限制
filed.setAccessible(true);
Object[] object =(Object[]) filed.get(list);
System.out.println("数组长度为:"+object.length);
}
效果
四、 泛型
JDK1.5之后
以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
五、 装箱、拆箱(案例:快递)
值类型->引用类型 装箱
引用类型->值类型 拆箱
jdk1.5之后引入了自动装箱及自动拆箱功能
六、 ArrayList、LinkedList、Vector区别
ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢
LinkedList:以链表的结构存储数据,查询慢、增删改快
Vector:增删改查都慢,已过时,同步.线程安全