java集合框架詳解
推薦 + 挑錯(cuò) + 收藏(0) + 用戶(hù)評(píng)論(0)
?。?首先查看jdk中Collection類(lèi)的源碼后會(huì)發(fā)現(xiàn)如下內(nèi)容:
。。. * @see AbstractCollection * @since 1.2*/ publicinterfaceCollection《E》extendsIterable《E》 {// Query Operations
通過(guò)查看可以發(fā)現(xiàn)Collection是一個(gè)接口類(lèi),其繼承了java迭代接口Iterable。
眾所周知在我們使用Java中的類(lèi)的存儲(chǔ)的時(shí)候經(jīng)常會(huì)使用一些容器,鏈表的概念,本文將徹底幫您弄清鏈表的各種概念和模型?。。?!
注意理解哦~~~ 大致框架如下:
Collection接口有兩個(gè)主要的子接口List和Set,注意Map不是Collection的子接口哦這個(gè)要牢記。
Collection中可以存儲(chǔ)的元素間無(wú)序,可以重復(fù)組各 自獨(dú)立的元素, 即其內(nèi)的每個(gè)位置僅持有一個(gè)元素,同時(shí)允許有多個(gè)null元素對(duì)象。
Collection接口中的方法如下:
1)List接口
List接口對(duì)Collection進(jìn)行了簡(jiǎn)單的擴(kuò)充
查看List接口的源碼會(huì)發(fā)現(xiàn):
。。.《br》 * @see AbstractList * @see AbstractSequentialList * @since 1.2*/ public interface List《E》 extends Collection《E》 { // Query Operations /** * Returns the number of elementsinthis list. If this list contains * more than 《tt》Integer.MAX_VALUE《/tt》 elements, returns * 《tt》Integer.MAX_VALUE《/tt》。 《br》 。。.
這里也就知道為什么Collection接口時(shí)List接口的父接口了吧。
List接口中的元素的特點(diǎn)為:
List中存儲(chǔ)的元素實(shí)現(xiàn)類(lèi)排序,而且可以重復(fù)的存儲(chǔ)相關(guān)元素。
同時(shí)List接口又有兩個(gè)常用的實(shí)現(xiàn)類(lèi)ArrayList和LinkedList
1)ArrayList:
ArrayList數(shù)組線性表的特點(diǎn)為:類(lèi)似數(shù)組的形式進(jìn)行存儲(chǔ),因此它的隨機(jī)訪問(wèn)速度極快。
ArrayList數(shù)組線性表的缺點(diǎn)為:不適合于在線性表中間需要頻繁進(jìn)行插入和刪除操作。因?yàn)槊看尾迦牒蛣h除都需要移動(dòng)數(shù)組中的元素。
可以這樣理解ArrayList就是基于數(shù)組的一個(gè)線性表,只不過(guò)數(shù)組的長(zhǎng)度可以動(dòng)態(tài)改變而已。
對(duì)于ArrayList的詳細(xì)使用信息以及創(chuàng)建的過(guò)程可以查看jdk中ArrayList的源碼,這里不做過(guò)多的講解。
對(duì)于使用ArrayList的開(kāi)發(fā)者而言,下面幾點(diǎn)內(nèi)容一定要注意啦,尤其找工作面試的時(shí)候經(jīng)常會(huì)被問(wèn)到。
注意啦?。。。。。。?!
a.如果在初始化ArrayList的時(shí)候沒(méi)有指定初始化長(zhǎng)度的話(huà),默認(rèn)的長(zhǎng)度為10.
packagecom.yonyou.test; importjava.util.ArrayList; importjava.util.Iterator;importjava.util.List; /** * 測(cè)試類(lèi) *@author小浩 * @創(chuàng)建日期 2015-3-2 */publicclassTest{publicstaticvoidmain(String[] args) { List《String》 list=newArrayList《String》(); list.add( “Hello”); list.add( “World”); list.add( “HAHAHAHA”); //第一種遍歷方法使用foreach遍歷Listfor(String str : list) { //也可以改寫(xiě)for(int i=0;i《list.size();i++)這種形式System.out.println(str); } //第二種遍歷,把鏈表變?yōu)閿?shù)組相關(guān)的內(nèi)容進(jìn)行遍歷String[] strArray= newString[list.size()]; list.toArray(strArray); for( inti=0;i《strArray.length;i++) //這里也可以改寫(xiě)為foreach(String str:strArray)這種形式{ System.out.println(strArray[i]); } //第三種遍歷 使用迭代器進(jìn)行相關(guān)遍歷Iterator《String》 ite=list.iterator(); while(ite.hasNext()) { System.out.println(ite.next()); } } }
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%