ArrayList 集合 也可稱作動態數組(長度可變),在新建的時候是沒有默認長度的,在新增數據長度小於10的時候,ArrayList 的長度會自動設置為10
//了解更多可以按住Ctrl 再點擊你需要查看的方法或者類名, 查看List源代碼,ArrayList源代碼
public static void main(String[] args) throws Exception {
Arraylist 新增數據時長度是10 當長度為10的時候 增長是如何增長的?
增長因子數位0.5倍,向下取整數。
ArrayList arr= new ArrayList();
arr.add("a");//給集合賦值
arr.add("b");
arr.add("c");
arr.add("d");
arr.add("e");
System.out.println(arr.size()); //ArrayList 集合可以有重復對象
System.out.println("-------下標輸出方式");
//下標輸出方式
for(int i=0;i<arr.size();i++) {
System.out.println(arr.get(i));
}
System.out.println("-------foreach輸出(jdk>1.5)");
//foreach輸出(jdk>=1.5)
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("-------jdk1.8的迭代器");
//迭代器
Iterator it=arr.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
ArrayList arr= 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");
ListIterator list=arr.listIterator();
System.out.println("----------------下");
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[] objects=(Object[]) elementData.get(arraylist);
System.out.println(objects.length);
}