目录
六、ArrayList、LinkedList、Vector区别
一:UML
统一建模语言
二:Collection接口
1.集合框架的顶级接口
2.是Set和List的父接口
3.但不是Map的父接口
4.集合中只能添加引用类型数据
三:List接口
2.1 特点:有序、对象可以重复
2.2 遍历方式
2.2.1 下标
2.2.2 foreach(>=jdk1.5)
2.2.3 迭代器Iterator(原理)
hasNext()
next()
2.3 List优化
初始容量10,负载因子0.5
指定初始容量
2.4 List元素删除
iterator
package com.zking.dog;
import java.util.ArrayList;
import java.util.List;
public class Demo01 {
public static void main(String[] args) {
//list集合的特点:1 有序
List list = new ArrayList();
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);
}
list.add(1);
//java八大基本数据类型:int byte float double short char boolean long
//整型[byte short int long]
//非整型[float double])和非数值[char boolean]
//引用数据类型: Integer Byte Float Double Short Character Boolean Long String
}
}
package com.zking.dog;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Set;
public class Demo02 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("刘德华");
list.add("张学友");
list.add("黎明");
list.add("郭富城");
//list集合的遍历方式 1.下标遍历 for循环
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();//返回值为布尔类型
// 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);
}
}
}
package com.zking.dog;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Demo03 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("刘德华");
list.add("张学友");
list.add("黎明");
list.add("郭富城");
System.out.println(list.size());
// //list集合的删除 顺序删除 有问题 不能全部删除
// for (int i = 0; i < list.size(); i++) {
// list.remove(i);
// }
// //list集合的删除 倒序删除
// for (int i = list.size()-1; i>=0; i--) {
// list.remove(i);
// }
//list集合的删除 迭代器
Iterator it = list.iterator();
while(it.hasNext()) {
it.next();
it.remove();
}
System.out.println(list.size());
}
}
package com.zking.dog;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class Demo04 {
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);
}
//值类型转换成引用类型 装箱
int i =1;
Integer j=i;
//引用类型转换成值类型 拆箱
Integer k =1;
i=k;
k.intValue();
}
//静态方法 实例方法 静态方法属于类 实例方法属于对象
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);
}
}
四、泛型
JDK1.5之后
以类型作为参数的类就叫泛型
作用:提高程序健壮性,简化代码
泛型的默认值是Object
五、装箱、拆箱(转换)
值类型->引用类型 装箱
引用类型->值类型 拆箱
jdk1.5之后引入了自动装箱及自动拆箱功能
六、ArrayList、LinkedList、Vector区别
ArrayList:以连续的数组结构存储数据,查询块(下标)、增删改慢
LinkedList:以链表的结构存储数据,查询慢、增删改快
Vector:增删改查都慢,已过时,同步.线程安全