[英]Why need to shift elements of ArrayList to the left after removing an element?
據我所知,這是刪除ArrayList
中的元素的步驟。
null
為什么不只是將要刪除的元素設置為null
? 這僅需一步。
誰能解釋以上方案的優點? 提前致謝。
因為這些不一樣(我們刪除"c"
):
["a", "b", "d", "e"]
["a", "b", null, "d", "e"]
刪除和替換之間有很大的區別:
"d"
可在索引2
(從3
移到)處訪問。 "d"
可從索引4
訪問(未更改)。 ...因為這就是列表的工作方式。 許多用例都需要這種動態調整大小的行為,因此Java 具有List概念的接口 。 ArrayList是List的幾種實現之一, LinkedList是另一個。
我們已經有了您要描述的行為Array ,因此在需要該行為的地方可以使用String[]
。
為什么不只是將我們要刪除的元素設置為null?
將元素“設置為null”並不意味着刪除元素,而是要替換元素。
這種方法還有另一個問題,如果列表中的null
表示“刪除”了該索引處的元素,那么如果我想實際將null
存儲為元素怎么辦? 如何區分刪除的元素和實際的null
元素?
利用List<T>
API中的remove
方法,不要嘗試重新發明輪子,因為它們會盡其所能。
ArrayList就像數組一樣,只是有一個不同-它們是可調整大小的(在此示例中這無關緊要)。
考慮以下數組: [ref1,ref2,ref3,ref4]
,其中ref1:4是對某些對象的引用。 這意味着它們不包含對象本身,它們僅指向對象。 現在,如果您想刪除ref2,例如將其聲明為null,則表示它現在不會指向任何對象( ref2 = null
),但這並不意味着該引用本身會消失,您的new array(ArrayList)將是[ref1,null,ref3,ref4]
現在。 你看? 更換和拆卸之間是有區別的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.