Java筆記 - Collection集合

在Java中,當對象多了,爲了我們方便操作這些類,在JDK1.2版本後,出現了集合Collection。集合Collection就是用於存儲集合的容器。

集合特點:
1. 用於存儲對象的容器
2. 集合的長度是可變的
3. 集合中不可以存儲基本數據類型值

由於需求不同,Java提供了不同的集合,這些集合容器內部數據結構不同,這些不同的容器將他們的共性不斷的向上抽取,就形成了集合框架。框架的頂層就是Collection接口。

Java的集合框架主要有三種:List、Set、Map。
需要注意的是,Collection、List、Set、Map都是接口,不是具體的類的實現。比如List list = new ArrayList();List是接口,ArrayList纔是具體的類。
這裏寫圖片描述

Collection常見方法
1. 添加
boolean add(Object obj):向集合中添加元素,如果添加成功則返回true,否則返回false(add(E e);e現在就相當Object)
boolean addAll(Collection coll):添加一個集合
2. 刪除
boolean remove(Object obj):刪除集合中的元素,如果成功返回true,否則返回false。執行一次,刪除開頭的一個元素。remove會改變集合的長度。
boolean removeAll(Collection coll):刪除集合中包含coll的所有元素
void clear():清空集合
3. 判斷
boolean contains(Object obj):如果collection包含指定的元素,返回true,否則返回false。
boolean containsAll(Collection coll)
boolean isEmpty():判斷集合中是否有元素,如果不包含元素,則返回true。
4. 獲取
int size():返回Collection中的元素數。
Iterator iterator():返回在此collection的元素上進行迭代的迭代器。
5. 其他
boolean retainAll(Collection coll):保留兩個Collection的交集
Object[] toArray():將集合轉成數組

Iterator迭代器
Collection接口從java.lang.Iterable接口中繼承了Iterator iterator()方法,該方法返回一個迭代器。在Java中迭代器Iterator是一個接口,位於java.util.Iterator中,Iterator中有三個方法:
- next():返回迭代的下一個元素
- boolean hasNext():如果仍有元素可以迭代,返回true
- void remove:刪除迭代器返回的最後一個元素
例:

Collection c1= new ArrayList();
c1.add("abc1");
c1.add("abc2");
c1.add("abc3");
System.out.println(c1);
c1.remove("abc2");
System.out.println(c1);
System.out.println(c1.contains("abc3"));
System.out.println(c1.isEmpty());
System.out.println(c1.size());
Collection c2 = new ArrayList();
c2.add("abc1");
c2.add("abc4");
c1.addAll(c2);
System.out.println(c1);
c1.removeAll(c2);
System.out.println(c1);
c1.add("abc1");
c1.retainAll(c2);
System.out.println(c1);
System.out.println("-------------------");
//迭代器Iterator
Collection coll= new ArrayList();
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");
coll.add("abc4");
coll.add("abc5");
Iterator i = coll.iterator();
System.out.println(i.next());
System.out.println(i.next());
System.out.println(i.hasNext());
i.remove();
System.out.println(coll);

while(i.hasNext()){
    System.out.println(i.next());
}

輸出結果:
[abc1, abc2, abc3]
[abc1, abc3]
true
false
2
[abc1, abc3, abc1, abc4]
[abc3]
[abc1]


abc1
abc2
true
[abc1, abc3, abc4, abc5]
abc3
abc4
abc5

迭代器原理
迭代器是取出元素的方式,想要取出容器中的數據,因爲容器有它自己的數據存儲特點,所以迭代器想要取出容器內部的數據,就要依賴容器內部的結構來實現迭代器,否則迭代器與容器不相關,不瞭解容器內部的數據存儲特點,是不知道怎麼獲取內部數據的。所以迭代器的取出動作應該是直接訪問容器內部的元素,所以這個迭代器的實現應該是通過內部類來完成的。
每個容器的內部都有自己的取出方式,這個取出方式在容器的內部,外部不知道,爲了能建立起所有容器的統一取出規則,就對其進行了規則的定義:
1.容器內部是否還存在元素hasNext()
2.怎麼取出容器內部的元素next()
把這個規則向上抽取,就獲得了Iterator接口,所有的容器都實現了這個接口,這個接口就是所有容器公共的取出方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章