集合框架之ArrayList -Java

ArrayList

1.與數組的區別

如果要存放多個對象,可以使用數組,但是數組會有長度的限制,會出現不夠用或者是浪費的情況。
為了解決數組的局限性引入了容器的概念,最常用的容器就是ArrayList
容器的容量會隨著對象的增加,自動增長,不用擔心超限的情況發生。

2.定義與常用方法(SchoolWork默認為一個類)(java.util.ArrayList)

<1>定義

ArrayList allWork = new ArrayList();  //定義格式

<2>add增加

allWork.add(new SchoolWork("math"));  //直接add對象,把對象加在最後面
allWork.add(1, "math");  //在指定位置增加對象

<3>contains判斷是否存在

System.out.println(allWork.contains("math"));  //判斷是否存在math,存在輸出true,反之false

<4>get獲取指定位置的對象

System.out.println(allWork.get(1));  //超限則會報錯

<5>indexOf獲取對象所處的位置

System.out.println(allWork.indexOf("math"));  //輸出math的位置下標

<6>remove刪除對象

allWork.remove(1);  //刪除下標1的對象
allWork.remove("math"); //直接指定刪除對象刪除

<7>set替換

allWork.set(1, "english");  //把下標1的元素替換為english

<8>size獲取大小

System.out.println(allWork.size());  //輸出大小

<9>toArray轉換為數組

SchoolWork arr[] = (school[])allWork.toArray(new SchoolWork[]{});

<10>addAll把另一個容器所有對象都加進來

//假設有allWork和threeWork兩個容器,並且threeWork中已有對象
allWork.addAll(threeWork);  //將threeWork中的對象都添加到allWork中

<11>clear清空容器

allWork.clear();

3.List介面

ArrayList實現了List介面,通常會把引用聲明為List介面類型(導入java.util.List)

List allWork = new ArrayList();

4.范型Generic

不指定范型的容器可以存放任何類型的元素
指定了范型的容器只能存放指定類型的元素及其子類

List<SchoolWork> allWork = new ArrayList<SchoolWork>();  //為了不出現編譯警告,前後都使用范型
List<SchoolWork> allWork = new ArrayList<>();  //jdk7提供了簡單的縮寫

5.遍歷ArrayList

<1>for循環遍歷

for (int i = 0; i < allWork.size(); i++) {
            SchoolWork h = allWork.get(i);
            System.out.println(h);
}

<2>迭代器遍歷(java.util.Iterator)

Iterator<SchoolWork> it= allWork.iterator();
//從最開始的位置判斷"下一個"位置是否有數據
//如果有就通過next取出來,並且把指針向下移動
//直到"下一個"位置沒有數據
while(it.hasNext()){
       SchoolWork h = it.next();
       System.out.println(h);
}
//迭代器的for寫法
System.out.println("--------使用for的iterator-------");
for (Iterator<SchoolWork> iterator = allWork.iterator(); iterator.hasNext();) {
        SchoolWork work = (SchoolWork) iterator.next();
        System.out.println(work);
}

<3>增強型for循環

很多程式設計師的首選,但存在不足之處:
無法用來進行ArrayList的初始化
無法得知當前是第幾個元素了,當需要只列印單數元素的時候就做不到了

for (SchoolWork h : allWork) {
    System.out.println(h);
}
Tags: