2011-11-02 121 views

回答

4

通過了它創建一個不可修改的列表避免(Java)的一個ArrayList對象:

List<Object> dontModify = Collections.unmodifiableList(originalList); 
2

這取決於具體要求:

  • Collections.unmodifiableList(arrayList)爲您提供了原始列表的不可修改視圖 - 這可能是你所需要的
  • 番石榴的ImmutableList使一個列表是不可變的(而不是一個視圖)(你必須在ArrayList元素複製到不可變列表)
4

你不給ArrayList到任何你不信任 - 而不是,您可以使用Collections.unmodifiableList在現有列表周圍創建一個不可變的包裝,並給出不可信的代碼。

請注意,這隻能在現有列表的周圍給出包裝 - 任何有權訪問原始列表的東西都可以修改它。如果你想創建一個完全不可變的列表,你可以使用專門的類(例如Guava中的ImmutableList)或創建原始列表的副本,使用Collections.unmodifiableList包裝該副本,並丟棄對可變列表的引用不可變的包裝器知道它)。

+0

是的,ImmutableList比Collections.unmodifiableList()更不可變。 –

+0

@盧聲遠ShengyuanLu:但不是比'unmodifiableList'更不可變的,它包裝了一個沒有別的東西可以知道的列表。如果OP想要避免依賴番石榴,這是一個簡單的方法。 –

+0

是的,我知道你的意思。 –