2014-03-03 33 views
1

報價:Scala的mutable.LinkedList來源追加

如果this爲空,則什麼也不做,返回that

有一些問題,其中作者問如何追加到鏈表,但我沒有發現,爲什麼 LinkedList的設計有這樣的行爲。

還有一個問題,Scala是否有任何帶添加/附加的列表(它會將O(1)更改爲this)和地圖操作?

回答

1

如果展開在mutable LinkedList API doc追加的文檔有更多的東西,最不解釋追加的O(n)性能:

def append(that: LinkedList[A]): LinkedList[A] 

如果爲空,則什麼也不做,並返回該。否則, 附加到這一點。追加需要完整的遍歷這個。

追加需要一秒鐘LinkedListthat),並將其追加到當前一個(this)。如果當前的LinkedList爲空,則將第二個LinkedList附加到空的一個的結果只是第二個LinkedList

我可能會誤解你的問題,但我不認爲這可能是有爭議的或需要特定的設計決定。

至於斯卡拉集合上的操作的性能特徵,我不確定是否有更新的東西,但我總是指出to this doc

+0

我只想知道,爲什麼LinkedList有這樣的行爲。我認爲簡單的列表應該有const時間添加操作(如java.util.LinkedList)。最有可能我不明白的東西。 我現在使用ListBuffer(用於地圖和添加),但不是很難看嗎? – user2317480

+0

java.util.LinkedList實際上是一個雙向鏈表。它有恆定的時間增加,因爲結尾的位置是已知的。 –