Java 集合体系详解——List体系有序集合
引言
面向?qū)ο笳Z(yǔ)言對(duì)事物的體現(xiàn)必然是以對(duì)象的形式,Java工程師為了方便多多個(gè)對(duì)象的操作,就對(duì)對(duì)象進(jìn)行存儲(chǔ),集合就是存儲(chǔ)對(duì)象的一種方式,他們的底層都是基于不同的數(shù)據(jù)結(jié)構(gòu)。當(dāng)然集合和數(shù)組一樣都是容器,數(shù)組也是可以存儲(chǔ)對(duì)象的,但是數(shù)組長(zhǎng)度一經(jīng)初始化長(zhǎng)度就是固定的,而集合長(zhǎng)度是可變的,數(shù)組只能用于存儲(chǔ)相同類型的對(duì)象,而集合可以存儲(chǔ)不同類型的對(duì)象,數(shù)據(jù)多了用對(duì)象封裝,對(duì)象多了用集合存。
一Java 集合類體系結(jié)構(gòu)
Java的所有的集合體系都是實(shí)現(xiàn)了Collection接口,所有通用的 Collection 實(shí)現(xiàn)類(通常通過它的一個(gè)子接口間接實(shí)現(xiàn) Collection)應(yīng)該提供兩個(gè)“標(biāo)準(zhǔn)”構(gòu)造方法:一個(gè)是 void(無(wú)參數(shù))構(gòu)造方法,用于創(chuàng)建空 collection;另一個(gè)是帶有 Collection 類型單參數(shù)的構(gòu)造方法,用于創(chuàng)建一個(gè)具有與其參數(shù)相同元素新的 collection。add方法的參數(shù)類型是Object,以便于利用多態(tài)特性接收任意類型的對(duì)象,集合中存儲(chǔ)的都是對(duì)象的引用(地址)。在Collection下又分三個(gè)子體系:?
List、Set、Map體系。?
二集合的迭代器
1 迭代器的實(shí)質(zhì)及設(shè)計(jì)思想
迭代器其實(shí)質(zhì)只是一個(gè)接口,只是取出集合中元素的一種方式,為了專業(yè)些給了他一個(gè)叫名字曰:迭代器。再深究其思想:每一個(gè)容器都有存和取的方式,而且每個(gè)容器的數(shù)據(jù)結(jié)構(gòu)也許都不一樣,所以存取的動(dòng)作實(shí)現(xiàn)的方式也有可能不一樣,為了用同一個(gè)描述不同集合讀取方式而把這個(gè)一操作封裝為一個(gè)類,而這個(gè)類是在各個(gè)集合類的內(nèi)部(因?yàn)橐僮骷蟽?nèi)部的數(shù)據(jù)成員,內(nèi)部類最方便)且這個(gè)內(nèi)部類都繼承了Iterator接口,Iterator主要是封裝了判斷和取出數(shù)據(jù)操作。每一個(gè)容器都對(duì)外暴露了一個(gè)方法即Iterator(),只要調(diào)用就能得到對(duì)應(yīng)的迭代器。不知道你們是否受到了啟發(fā)?反正我是學(xué)習(xí)到了他的設(shè)計(jì)思想。(把數(shù)據(jù)封裝為類,抽取共性作為父類或者接口,再結(jié)合多態(tài))
2 迭代器的應(yīng)用
再回到頂層接口Collection,接口里定義了一個(gè)Iterator iterator() <返回在此 collection 的元素上進(jìn)行迭代的迭代器>,既然所有的集合類都是實(shí)現(xiàn)了Collection接口所以我們只要調(diào)用對(duì)應(yīng)集合類中復(fù)寫了的?Iterator()就得到了迭代器,都能夠借助迭代器里的定義的方法hasNext()、next()、remove()去遍歷集合元素。
3 List體系特有的迭代器ListIterator
List體系下由于Iterator在迭代時(shí)不能通過集合對(duì)象的方法操作集合中的元素,因?yàn)闀?huì)發(fā)生并發(fā)異常,所以在迭代時(shí)只能用迭代器的方法操作元素,可Iterator方法是有限的,只能對(duì)元素進(jìn)行判斷、取出、刪除的操作,如果要進(jìn)行其他操作如添加、修改等就應(yīng)該使用特有的ListIterator。
三 List集合體系
List集合體系即實(shí)現(xiàn)了List接口的所有集合類,最常用的是ArrayList、LinkedList這兩個(gè)集合類。
1 List集合的特點(diǎn)
2 ArrayList存儲(chǔ)對(duì)象的過程及應(yīng)用
2.1)集合中存儲(chǔ)的是對(duì)象的地址
舉個(gè)例子說(shuō)明,我們要把一個(gè)Student對(duì)象保存到ArrayList集合里,在棧中會(huì)保存s、al變量(基本類型的變量和對(duì)象的引用變量都是在函數(shù)的棧內(nèi)存中分配),由于new了兩個(gè)對(duì)象而在堆內(nèi)存中會(huì)分配到兩個(gè)地址空間(堆內(nèi)存用于存放由new創(chuàng)建的對(duì)象和數(shù)組),一個(gè)用于保存new Student(),一個(gè)用于保存new ArrayList(),當(dāng)add之后,才會(huì)把new Student()的地址保存到集合中。
<code class="hljs oxygene has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">Student s=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Student(); ArrayList<Student> al=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> ArrayList<Student> (); al.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">add</span>(s);</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
2.2)ArrayList集合的應(yīng)用
若在迭代過程中,使用集合對(duì)象準(zhǔn)備添加或者刪除元素時(shí)會(huì)產(chǎn)生并發(fā)修改異常,把遍歷代碼改成這樣:
<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">it</span>.hasNext()){<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(obj.equals(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Java"</span>)){al.<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">add</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"任性添加"</span>);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"> //執(zhí)行時(shí)報(bào)異常</span>}System.out.println(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">it</span>.next())<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;//取出每一個(gè)元素</span> }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li></ul>但是不是使用集合對(duì)象去操作,而是該用迭代器對(duì)象去操作集合的數(shù)據(jù),則可以正常執(zhí)行,比如刪除掉指定元素,把代碼改為:
<code class="hljs cmake has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">System.out.println(al);//輸出:[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"初"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"識(shí)"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Java"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"集合"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"框架"</span>] Iterator<<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">String</span>> it=al.Iterator();//接口只能指向自己的子類對(duì)象,獲取迭代器用于出去集合中的元素 <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span>(it.hasNext()){it.next();//取出每一個(gè)元素//若在迭代過程中,使用集合對(duì)象進(jìn)行準(zhǔn)備添加或者刪除元素時(shí)會(huì)產(chǎn)生并發(fā)修改異常,應(yīng)該同樣適用迭代器對(duì)象來(lái)進(jìn)行,比如 it.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">remove</span>();Object obj=new Object();<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(obj.equals(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Java"</span>)){it.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">remove</span>();//會(huì)正常執(zhí)行,并把元素Java引用從集合移除掉,但是Java還是存在于內(nèi)存中,因?yàn)镴ava的引用還在被obj引用所以被打印出來(lái)}//但是迭代過程還是會(huì)先輸出被刪除的元素:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"初"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"識(shí)"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Java"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"集合"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"框架"</span> } System.out.println(al);//輸出:[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"初"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"識(shí)"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"集合"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"框架"</span>]</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul> 再一次證明的集合存儲(chǔ)的是對(duì)象的地址。?
2. 例2:去除ArrayList中的重復(fù)元素
2 LinkedList鏈表的應(yīng)用
LinkedList的使用和ArrayList沒多大區(qū)別,兩者相比LinkedList的優(yōu)勢(shì)在于更加便于進(jìn)行頻繁的修改操作。下面用LinkedList來(lái)模擬Queue隊(duì)列數(shù)據(jù)結(jié)構(gòu)
<code class="hljs java has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">Class MyQueue{<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> LinkedList link;Quee(){link=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> LinkedList();}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">myAdd</span>(Object obj){link.addFirst(obj);}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> Object <span class="hljs-title" style="box-sizing: border-box;">myGet</span>(){link.removeLast();}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">boolean</span> <span class="hljs-title" style="box-sizing: border-box;">isNull</span>(){<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> link.isEmpty();}。。。 }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li></ul>3 向量Vector(盡量不要使用)
向量Vector其實(shí)就是可變長(zhǎng)度的數(shù)組,ArrayList完全可以替代,向量中的枚舉。有點(diǎn)類似迭代器,應(yīng)優(yōu)先考慮迭代器。因?yàn)槊杜e的名稱及方法的名稱都過長(zhǎng)所以被迭代器取代了。
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">Vector e=new Vector()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> e<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"初"</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> e<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"識(shí)"</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> e<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Java"</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> e<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"集合"</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span> e<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.add</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"框架"</span>)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;</span>Enumeration en =v<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.elements</span>()<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">;//獲取枚舉,可以理解為迭代器該怎么用還是怎么用</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>總結(jié)
以上是生活随笔為你收集整理的Java 集合体系详解——List体系有序集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Zookeeper应用:服务端上下线
- 下一篇: java bean spring_Jav