package javaEE02;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class Test {
public static void main(String[] args) throws Exception {
// 默认的长度是 10 当长度为10的时候,增长因子数为0.5倍,向下取整
//判断是否可以加重复值
ArrayList arr=new ArrayList();
arr.add("a");
arr.add("a");
arr.add("a");
arr.add("a");
arr.add("a");
arr.add("a");
arr.add("a");
arr.add("b");
arr.add("c");
arr.add("d");
arr.add("e");
arr.add("f");
System.out.println(arr.size());
//下标输出方式
System.out.println("下标输出方式");
for(int i=0;i<arr.size();i++) {
System.out.println(arr.get(i));
}
//foreach输出方式(>=jdk1.5)
//集合中的元素
System.out.println("foeach输出方式");
for(Object o:arr) {
System.out.println(o);
}
System.out.println("jdk1.8语法糖输出方式");
//jdk1.8的语法糖
arr.forEach(x->System.out.println(x));
//迭代器
System.out.println("迭代器输出方式");
Iterator it=arr.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
ArrayList brr=new ArrayList();
for(int i=0;i<20;i++) {
print(arr);
arr.add(i);
}
//ArrayList arr=new ArrayList(5);
arr.add("a");
arr.add("b");
arr.add("c");
arr.add("d");
arr.add("e");
//向下读取
System.out.println("-------下");
ListIterator list=arr.listIterator();
while(list.hasNext()) {
System.out.println(list.next());
}
//向上读取
System.out.println("-------上");
while(list.hasPrevious()) {
System.out.println(list.previous());
}
//栈 是一个车箱 最大容量为 3M
//堆 是一个火车 将内存中的零散的空间组成的一张链式表格
//实现自定义的栈 mystack
}
static void print(ArrayList arraylist) throws Exception{
Class c=arraylist.getClass();
Field elementData=c.getDeclaredField("elementData");
elementData.setAccessible(true);
Object[] object=(Object[])elementData.get(arraylist);
System.out.println(object.length);
}
}