集合的體系結(jié)構(gòu):
? ? 由于不同的數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的組織刚夺,存儲(chǔ)方式)闸衫,所以java為我們提供了不同的集合涛贯。但是不同的集合他們的功能卻都是相似的,不斷地向上提取楚堤,將共性抽取出來(lái),這就是集合的體系結(jié)構(gòu)形成的原因含懊。
java中的集合類型都是對(duì)java.util包中對(duì)Collection接口的繼承身冬。
Collection中的常用功能(接口)
? ? Collection是接口,不能實(shí)例化岔乔,即不能直接new Collection酥筝,所以這時(shí)便用到了多態(tài),創(chuàng)建對(duì)象的時(shí)候可以寫成Collection c = new ArrayList()雏门;父類的引用指向子類對(duì)象嘿歌。
<1>.boolean add (E e):驗(yàn)證是否添加成功
Collection c = new ArrayList();
System.out.println(c.add("hello"));
//true
<2>.void clear():清空集合
c.clear( );
<3>.boolean contains(Object o ):判斷集合中是否包含有指定元素
<4>.boolean isEmpty( ):判斷是否為空,不為空返回false茁影,為空返回true
<5>.boolean remove(Object o):刪除元素
<6>.int size( ):返回集合中元素個(gè)數(shù)
<7>.Object[ ] toArray():將集合轉(zhuǎn)換成一個(gè)Object類型的數(shù)組
Object [ ] obj = c.toArray( );
集合的遍歷方式:
? ? a.toArray()宙帝,可以把集合轉(zhuǎn)換成數(shù)組,然后遍歷數(shù)組即可募闲。
? ? b.iterator()步脓,可以返回一個(gè)迭代器對(duì)象,我們可以通過(guò)對(duì)象來(lái)迭代集合
Interator:可以用于遍歷集合
? ? E next():返回下一個(gè)元素
例:創(chuàng)建集合對(duì)象 Collection c = new ArrayList( ) ;
? ? ? ? ? ? ? ? ? ? ? ? c.add("hello");
? ? ? ? ? ? ? ? ? ? ? ? c.add("world");
獲取迭代器對(duì)象
? ? Interator it = c.iterator( ) ;?
? ? System.out.println(it.next());
? System.out.println(it.next());
? System.out.println(it.next());
輸出結(jié)果:hello,world靴患,錯(cuò)誤
注意:使用next方法獲取一個(gè)元素仍侥,如果沒有元素可以獲取,則出現(xiàn)一個(gè)異常鸳君,那么就要判斷是否有元素可以獲取农渊,boolean hasNext()就很好的解決了這個(gè)問題。如下例:
將代碼改寫為? ? ?while(it.hasNext()){
? ? ? ? ? ? ? ? ? ? ? ? System.out.println(in.next)或颊;
}
案例:
? ? 需求:判斷集合中是否包含元素java砸紊,如果有則添加元素Android
分析:第一個(gè)方法就是使用Collection中的contains方法來(lái)判斷
第二個(gè)方法就是使用迭代器遍歷集合并與java進(jìn)行比較,如果有則添加饭宾。
迭代器是依賴與集合的批糟,相當(dāng)于集合的一個(gè)副本,當(dāng)?shù)鞑僮鞯臅r(shí)候看铆,如果發(fā)現(xiàn)和集合不一樣徽鼎,則會(huì)拋出異常,解決方案:在使用迭代器進(jìn)行遍歷的時(shí)候弹惦,使用迭代器本身對(duì)象來(lái)修改否淤。
迭代器是沒有添加方法的,去子類ListInterator中有添加方法棠隐,但是Collection獲取不到ListInterator對(duì)象石抡,但是List可以,所以
//創(chuàng)建List集合對(duì)象
List? c= new ArrayList( );
c.add("hello");
c.add("world");
c.add("java");
//獲取ListInterator對(duì)象
ListInterator lit = c.ListInterator( );
? ? while(lit.hasNext()){
? ? ? ? String s = (String)lit.next();
? ? ? ? if(s.equals("java")){
? ? ? ? ? ? lit.add("Android");
}
}
System.out.println(c);