標題幾乎說明了一切。我很難找到這方面的信息,所以我做了一些試驗和錯誤,我想我會在這裏分享我的結果。Java ArrayList是否支持稀疏標記?
從PHP背景來看,我期望Java的ArrayList
類型支持稀疏指示。例如,在PHP中,我可以這樣做:
$test = array(
"Item 1",
"Item 2",
"Item 3"
);
unset($test[1]);
echo $test[2];
並返回「Item 3」。但是,當我在Java中嘗試類似的東西時:
ArrayList<String> test = new ArrayList<>();
test.add("Item 1");
test.add("Item 2");
test.add("Item 3");
test.remove(1);
System.out.println(test.get(2));
我得到一個IndexOutOfBoundsException
。看起來,當你刪除元素時,數組會被重新索引。也許我錯過了一些東西(我對Java很新),但是在我看來,如果你依賴於知道索引不會在元素被刪除時改變,那麼應該使用類似HashMap
而不是ArrayList
。
[相關問題](http://stackoverflow.com/questions/12626135/memory-efficient-sparse-array-in-java)。 –
*「我很難找到關於這個的信息......」* - 您尋找有關Java類信息的第一個地方是Javadoc。 –
根據文檔,remove()方法進一步刪除並移位每個尾隨值1的位置。也許你可以改爲將值設置爲null,或者在你的情況下是一個空字符串。 – redxef