arraylist刪除指定元素 為什么說(shuō)ArrayList在增加和刪除元素效率較低?
為什么說(shuō)ArrayList在增加和刪除元素效率較低?ArrayList類實(shí)現(xiàn)了List接口,由ArrayList類實(shí)現(xiàn)的List集合采用數(shù)組結(jié)構(gòu)保存對(duì)象。數(shù)組結(jié)構(gòu)的優(yōu)點(diǎn)是便于對(duì)集合進(jìn)行快速的隨機(jī)訪問,
為什么說(shuō)ArrayList在增加和刪除元素效率較低?
ArrayList類實(shí)現(xiàn)了List接口,由ArrayList類實(shí)現(xiàn)的List集合采用數(shù)組結(jié)構(gòu)保存對(duì)象。
數(shù)組結(jié)構(gòu)的優(yōu)點(diǎn)是便于對(duì)集合進(jìn)行快速的隨機(jī)訪問,如果經(jīng)常需要根據(jù)索引位置訪問集合中的對(duì)象,使用由ArrayList類實(shí)現(xiàn)的List集合的效率較好。
數(shù)組結(jié)構(gòu)的缺點(diǎn)是向指定索引位置插入對(duì)象和刪除指定索引位置對(duì)象的速度較慢,如果經(jīng)常需要向List集合的指定索引位置插入對(duì)象,或者是刪除List集合的指定索引位置的對(duì)象,使用由ArrayList類實(shí)現(xiàn)的List集合的效率則較低,并且插入或刪除對(duì)象的索引位置越小效率越低,原因是當(dāng)向指定的索引位置插入對(duì)象時(shí),會(huì)同時(shí)將指定索引位置及之后的所有對(duì)象相應(yīng)的向后移動(dòng)一位,如圖1所示。
當(dāng)刪除指定索引位置的對(duì)象時(shí),會(huì)同時(shí)將指定索引位置之后的所有對(duì)象相應(yīng)的向前移動(dòng)一位,如圖2所示。
如果在指定的索引位置之后有大量的對(duì)象,將嚴(yán)重影響對(duì)集合的操作效率。
怎樣從Arraylist中刪除一個(gè)元素?
一。概述在本教程中,我們將看到如何使用不同的技術(shù)從Java的ArrayList中刪除元素。給定一個(gè)運(yùn)動(dòng)列表,讓我們看看如何擺脫以下列表中的某些元素:二。ArrayList的刪除ArrayList有兩種方法可以移除元素,一種是傳遞要移除的元素的索引,另一種是傳遞要移除的元素本身(如果存在)。我們將看到這兩種用法。2.1按索引刪除使用remove將索引作為參數(shù)傳遞,我們可以刪除列表中指定位置的元素,并將任何后續(xù)元素向左移動(dòng),從其索引中減去一個(gè)元素。執(zhí)行后,remove方法將返回已刪除的元素:2.2按元素刪除另一種方法是使用此方法從列表中刪除元素的第一個(gè)匹配項(xiàng)。形式上講,如果存在的話,我們刪除具有最低索引的元素,如果不是,列表不變。三。迭代刪除有時(shí)我們希望在循環(huán)時(shí)從ArrayList中移除元素。由于沒有生成ConcurrentModificationException,我們需要使用迭代器類來(lái)正確地執(zhí)行它讓我們看看如何在循環(huán)中除去元素:四。陣列列表ArrayList#刪除(JDK 8 )如果我們使用JDK 8或更高版本,我們可以利用ArrayList#removeIf來(lái)刪除滿足給定謂詞的ArrayList的所有元素。最后,我們可以使用第三方庫(kù)(如Apache Commons)來(lái)完成這項(xiàng)工作,如果我們想深入研究,我們可以看到如何以有效的方式刪除所有特定的事件。五。結(jié)論在本教程中,我們研究了從Java中的ArrayList中刪除元素的各種方法。
如何刪除一個(gè)list中最后一個(gè)元素?
從list中刪除指定元素可以使用remove方法來(lái)實(shí)現(xiàn):ArrayListal=newArrayList()al.add("a")al.add("b")//al.add("b")//al.add("c")//al.add("d")for(inti=0i<al.size()i ){if(al.get(i)=="b"){al.remove(i)i--}}在代碼中,刪除元素后,需要把下標(biāo)減一。這是因?yàn)樵诿看蝿h除元素后,ArrayList會(huì)將后面部分的元素依次往上挪一個(gè)位置(就是copy),所以,下一個(gè)需要訪問的下標(biāo)還是當(dāng)前下標(biāo),所以必須得減一才能把所有元素都遍歷完。
怎樣從Arraylist中刪除一個(gè)元素?
Arraylist刪除一個(gè)元素,有兩種方法1.按下標(biāo)刪除如:list.remove(0),list.remove(list.size()-1)2.按元素刪除如:list.remove(list.get(0))刪除第一個(gè)元素list.remove(list.get(list.size()-1))刪除最后一個(gè)元素