2011-07-06 45 views

回答

0

嗯......你正在使用一個不可變的列表。 「不可變」這個詞的含義是它不能被改變 - 如果有一種方法可以將一個元素添加到這個列表的中間,那將是一個錯誤。

編輯:實際上,有可能的方式在這樣的列表中添加的元素 - 可能是在JVM級別操縱相應的數據會做的伎倆 - 但仍然是不好的,因爲所有其他程序使用的不變的列表期望該列表始終保持不變。

+1

是的,不可改變意味着它不能被改變,但因爲它是不可變的添加操作返回新系列。我想知道如何生成新的集合? – Pallavi

+0

你做一個新的清單!不變列表的全部重點是每當它發生變化時,都會創建一個新列表! (不完全是由於鏈接列表技巧,但認爲它是這樣的) – bwawok

2

含糊回答一個模糊的問題:

有幾種方法分裂的不可變列表,例如使用takedrop。從部分(包括中間元素)中,您可以組裝一個新的不可變列表,例如使用:::,這應該在Java,IIRC中稱爲$colon$colon$colon

如果您需要更多詳細信息,請添加一些代碼。

6

sList是Scala的列表,讓List是斯卡拉列表類型和42要添加的元素:

final int half = sList.size /2; 
final List<Int> first = sList.take(half); 
final List<Int> second = sList.drop(half); 
final List<Int> result = first.$colon$colon$colon(second.$colon$colon(42));