集合框架之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);
}