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