Scala ListBuffer中+=操作理解

+=操作 Appends a single element to this buffer. This operation takes constant time.
源码:

    def += (x: A): this.type = {
      if (exported) copy()
      if (isEmpty) {
        last0 = new :: (x, Nil)
        start = last0
      } else {
        val last1 = last0
        last0 = new :: (x, Nil)
        last1.tl = last0
      }
      len += 1
      this
    }

在上面的语句中,将last0赋值给start,以及将last0赋值给val对象last1,是关键。此时,只要对last1的tl(即tail,声明为var的scala包下可访问的构造函数参数)进行赋值,其实就是给start增加尾部元素。

当ListBuffer为空时,start一开始就指向了第一个创建的 :: 类,然后每加入一个单元就创建一个 :: 类,依次用tl链起来;整个start就是一串 :: 类链起来的.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容