java 顶层类_Javase之集合体系之(1)集合顶层类Collection与其迭代器知识
集合體系之集合頂層類Collection與其迭代器知識
集合的由來:Java是一門面向對象語言,而面向對象語言對事物的描述是通過對象體現的,為了方便對多個對象進行操作,就必須把多個對象進行存儲,而要存儲多個對象,就不能是一個基本變量,而應該是一個容器類型的變量,在容器以前的內容中,只有數組和StringBuffer是容器類型。但StringBuffer的結果是一個字符串。故只能使用數組,即對象數組。但對象數組因為長度固定,不能適應變化的需求。所以Java提供集合類。
集合與數組的區別
1.集合的長度可變,而數組長度固定。
2.數組存儲了一類元素,集合可以存儲不同類型的元素。
3.數組即可存儲基本類型數據,又可存儲引用類型數據。但集合只能存儲引用類型。
Colection(接口)
集合的頂層接口,其子體系有重復的,有唯一的,有無序的,有有序的。
主要子接口有兩個:
?|–List
?有序(存儲與取出順序不一致),可重復。
?|–Set
?無序(存儲順序與取出順序不一致,但它有內在的存儲順序該順序通過哈希表生成,有時在輸入時可能與其內在順序相同,但之并不代表其有序,多輸入幾個數據就會發現其無序性),唯一。
?
Collection的功能概述
添加功能
boolean add(E e):添加一個元素
boolean addAll(Collection extends E> c):添加一個集合的元素
刪除功能
void clear():移除所有元素
boolean remove(Object o):collection 中移除指定元素的單個實例
boolean removeAll(Collection> c):移除一個集合的對象(只要有一個被移除就返回true)
判斷功能
boolean contains(Object o):判斷集合是否包含指定元素
boolean containsAll(Collection> c);判斷集合是否包含指定的集合元素(包含所有才叫包含)
boolean isEmpty():判斷集合是否為空
獲取功能
Iterator iterator():生成一個迭代器對象,從而迭代訪問每個元素
長度功能
int size():元素個數
交集功能
boolean retainAll(Collection> c):刪除集合中,在c集合中不存在的元素
解釋:假定有A,B兩個集合
A,B做交集,最終結果存放在A中,B不變
返回值表示A是否發生變化。
把集合轉換為數組
toArray
Object[] toArray()
Iterator(接口)
對 collection 進行迭代的迭代器。
是遍歷集合的一種方式,迭代器依賴于集合存在
迭代器定義為接口的原因:
?假定迭代器是一個類,那么我們就可以創建該類對象并調用方法來實現集合的遍歷,但是Java中有許多的集合類,而這些集合類的數據結構不同,所以存儲和遍歷的方式是不同的。進而它們的遍歷方式不同,所以沒有定義迭代器類。
?而無論是哪種集合,都具備獲取元素的操作,而且最好在輔助于判斷功能,這樣在獲取前,先判斷就不容易出錯,所以判斷功能和獲取功能應該是一個集合遍歷所具備的,而每種集合的遍歷方式不同。所以就把兩種功能提取出來,而不提供具體實現,這就是迭代器聲明為接口的原因。
?迭代器真正的實現類在具體的子類中,以內部類的方式實現。
因為Collection類實現了Iterable而Iterable中
hasNext
boolean hasNext():如果仍有元素可以迭代,則返回 true。
(換句話說,如果 next 返回了元素而不是拋出異常,則返回 true)。
next
E next():返回迭代的下一個元素。
remove
void remove():從迭代器指向的 collection 中移除迭代器返回的最后一個元素(可選操作)。
每次調用 next 只能調用一次此方法。如果進行迭代時用調用此方法之外的其他方式修改了該迭代器
所指向的 collection,則迭代器的行為是不確定的。
拋出:
UnsupportedOperationException - 如果迭代器不支持 remove 操作。
IllegalStateException - 如果尚未調用 next 方法,或者在上一次調用 next 方法之后已經
調用了 remove 方法。
迭代器使用的兩種方式
while
通過迭代器的hasNext()和next()方法實現
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class t3 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
Iterator it = c.iterator();
while (it.hasNext()){
String s = it.next();
System.out.println(s);
}
}
}
out:
hello
world
java
增強for循環
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class t3 {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
for (String s:c){
System.out.println(s);
}
}
}
out:
hello
world
java
二者作用相同
總結
以上是生活随笔為你收集整理的java 顶层类_Javase之集合体系之(1)集合顶层类Collection与其迭代器知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java http客户端_java 11
- 下一篇: java美元兑换,(Java实现) 美元