不能说size字段已被 删除
,因为LISP自LISP以来已经存在了50年,这种列表无处不在,并且它们在ML和Haskell中也很常见,两者在scala中都很重要。
根本原因是列表是递归结构。非空值
List是一个事实
Cons(head: A, tail:List[A])-除了实际上调用Cons
::允许使用方便的中缀表示法。您可以访问尾部(不包含head元素的列表),这也是一个列表。而且,几乎所有时间都是如此。因此,在列表中包含计数并不意味着要添加一个整数,而是要与元素个数一样多。这是可行的,但肯定不是免费的。
如果与java的比较
linkedList,
linkedList则具有递归实现(基于Node,它或多或少类似于Cons,但是双向都有链接)。但是linkedList不是Node,它拥有它们(并保留它们的计数)。因此,尽管它具有递归实现,但是您不能递归对待它。如果您希望将linkedList的尾部作为linkedList,则必须删除头部并更改列表,或者将所有tail元素复制到新的linkedList中。因此,scala
List和java的
linkedList结构非常不同。



