JAVA中的容器 2
阿新 • • 發佈:2019-12-31
1.容器類
初步瞭解容器後,我們來講講容器類,又被稱作集合框架.
首先我們來認識一下常見的兩種容器體系
集合框架的簡單體系如下:
- Collection 儲存單個資料的容器體系,它也是容器體系的上層介面,其下有兩個子介面:
1.Set 沒有順序,不可重複 2.List 有順序,可以重複
- Map 鍵值對形式資料的容器體系
2.Collection
我們來具體嘗試下collection中的一些常用方法
首先我們新建類在main的主方法中new一個collection物件
Collection col=new ArrayList();
//以此物件使用其中的方法
複製程式碼
1.add 新增
col.add(123);
col.add("哈哈");
col.add(false);
col.add('c');
複製程式碼
容器可以儲存多個資料型別,不同於陣列
2.size 返回容器大小
System.out.println(col.size());
複製程式碼
即返回容器裡儲存的資料數量
3.remove 移除
col.remove(123);
System.out.println(col);
複製程式碼
會移除容器中的資料(123)
4.iterator 遍歷
Iterator it=col.iterator();
//2.判斷是否存在下一個元素
while(it.hasNext()){
//3.獲取元素
System.out.println(it.next()); //獲取下一個元素
}
複製程式碼
遍歷輸出容器裡全部資料
還有一些方法感興趣的同學也可以自己嘗試一下
3.List介面
list作為子介面,有序(索引)可重複,新增了一些根據索引操作的方法
接下來展示方法實際中的應用
public class ListDemo01 {
public static void main(String[] args) {
//新增泛型 增可讀性
List<Integer> ls=new ArrayList();
//儲存班級學生分數
ls.add(2);
ls.add(0);
ls.add(1 );
ls.add(4);
ls.add(3);
System.out.println(ls);
//add(index,element) 新增
ls.add(3,3);
System.out.println(ls);
//E set(int index,E element) 修改
ls.set(5,5);
System.out.println(ls);
// E get(int index) 獲取
System.out.println(ls.get(2));
// E remove(int index)
//當容器中的資料也是整數時候,以索引為主
//下課測試,如果出現多個相同的值,移出時候刪除多個,還是第一個
System.out.println(ls.remove(2));
System.out.println(ls);
//List<E> subList(int fromIndex,int toIndex) 不包含結束索引
System.out.println(ls.subList(1,4));
System.out.println(Arrays.toString(ls.toArray()));
System.out.println(ls.toArray()[1]);
//普通for
for(int i=0;i<=ls.size()-1;i++){
System.out.println(ls.get(i));
}
}
}
複製程式碼
4.ArrayList
ArrayList是List的子類,它與HashSet相反,允許存放重複元素,因此有序.
ArrayList的底層實現是由可變陣列(通過一些方法)實現的,通過陣列拷貝實現容器可以根據內容進行動態擴容;
ArrayList的優點是遍歷和獲取的效率高,因為我們可以根據索引直接定位到我們需要的元素;
ArrayList的缺點是增刪的效率低;
當ArrayList的容量不足以繼續存放物件時,會自動的擴容,每次擴容原先容器大小的1.5倍;
ArrayList可以使用多型
在單執行緒環境下,在大量做查詢的業務下,適合使用ArrayList
5.在定義一個容器時為什麼使用泛型
在JDK1.4之前型別不明確:
裝入集合的型別都被當做Object對待,從而失去自己的實際型別.從集合中取出時往往需要轉型,效率低,容易產生錯誤.
- 使用泛型之後可以增強程式的可讀性和穩定性.
- 使用泛型,保留了容器中元素的型別,安全省心的使用容器.