首先,我不問一個包裝的問題,使包裝只讀,比如Collections.unmodifableXXX。我的API會有一個不同的API,所有的修改器方法都會返回新的集合。不可變的集合,當修改後返回一個新的視圖
類似於簡單列表的東西不再具有void set方法,但會返回一個新List。
理想情況下,該軟件包將包含List,Set,Map甚至無聊堆棧的相同不變變體。
UPDATE
// i am omitting generics etc to keep things simple.
XList list = List.fromArray(1, 2, 3);
XList list2 = list.add(4);
System.out.println(list); // 1, 2, 3
System.out.println(list2); // 1, 2, 3, 4
中移除了,套等所有更新內容等後返回不同的列表
你有沒有想過使用[Scala的](http://www.scala-lang.org/api/current/scala/collection/immutable/List.html)?不知道這將如何在Java中氾濫...... – 2012-03-24 01:40:25
您所描述的內容稱爲「寫時複製」。 – 2012-03-24 01:44:11
@jimGarrison im問實例保持不變,你實際上描述COW如何在內部關於支持數組的工作。 – 2012-04-22 22:16:33