精华内容
下载资源
问答
  • Scala中使用ListBuffer高效遍历List

    千次阅读 2016-01-10 11:00:28
    Scala中,使用ListBuffer高效遍历List。

       在scala中,ListBuffer是可变的,所以可以使用其对List进行遍历操作。ListBuffer在包scala.collection.mutable.ListBuffer中。

    1、代码

    package com.yy.enhance
    
    /**
     * ListBuffer使用示例
     * 功能:为List中的每个元素加1
     */
    case object ListOp{
      //List 遍历、递归
      def increment(list:List[Int]):List[Int] = list match{
        case List() => List()
        case head::tail => head + 1 :: increment(tail)
      }
      
      //方式二
      def increment_MoreEffective(list:List[Int]):List[Int]={
        var result = List[Int]()
        for(element<-list)
           result = result:::List(element+1)
        result
      }
      
      //使用ListBuffer:可变---效率高
      def incrementWithListBuffer(list:List[Int]):List[Int]={
        import scala.collection.mutable.ListBuffer
        var listBuffer = new ListBuffer[Int]
        for(element <- list)
           listBuffer += element +1
        listBuffer.toList
      }
    }
    object ListBufferTest extends App {
      val list  = List(1,2,3,4,5,6,7,8,9)
      //使用List遍历方法
      println(ListOp.increment(list))
      println(ListOp.increment_MoreEffective(list))
      println(ListOp.incrementWithListBuffer(list))
    }

    2、结果

    List(2, 3, 4, 5, 6, 7, 8, 9, 10)
    List(2, 3, 4, 5, 6, 7, 8, 9, 10)
    List(2, 3, 4, 5, 6, 7, 8, 9, 10)
    
     可以看出,结果相同,但是效率是不同的。

    展开全文
  • Scala中ListBuffer高效遍历

    千次阅读 2015-08-19 06:26:10
    package com.dt.scala.list object ListBuffer_Internals { def main(args: Array[String]): Unit = { val list = List(1,2,3,4,5,6,7,8,9) increment(list) increment_MoreEffective(list) inc


    package com.dt.scala.list
    
    
    object ListBuffer_Internals {
      def main(args: Array[String]): Unit = {
        val list = List(1,2,3,4,5,6,7,8,9)
        increment(list)
        increment_MoreEffective(list)
        increment_MostEffective(list)
      }
      
      def increment(list :List[Int]) : List[Int] = list match {//函数建立堆栈需要消耗大量的内存
      case List() => List()
      case head :: tail => head + 1 :: increment(tail)
     }
      
      def increment_MoreEffective(list : List[Int]) : List[Int] = {//比上边那种有较少的内存消耗。理论上讲支持所有元素个数。但是这里会产生很多种中间结果的list对象,效率是非常低的。
        var result = List[Int]()
        for(element <- list) result = result ::: List(element + 1)
        result
      }
      
      def increment_MostEffective(list: List[Int]) : List[Int] = {//最高效、既能够使用循环遍历,又会避免创建那么多的中间对象,就引入了ListBuffer
        import scala.collection.mutable.ListBuffer  //可变
        var buffer = new ListBuffer[Int]
        for(element <- list) buffer += element + 1
        buffer.toList
      }
      
      //ListBuffer源码:
    //  def += (x:A) : this.type = {
    //    if (exported) copy()  //exported 是否返回toList
    //    if (start.isEmpty){
    //      last0 = new :: (x,Nil)
    //      start = last0
    //    } else {
    //      val last1 = last0
    //      last0 = new :: (x,Nil)
    //      last1.tl = last0   //不断在后边追加成员
    //    }
    //    len += 1
    //    this
    //  }
    //  
    //  override def toList:List[A] = {
    //    exported = !start.isEmpty
    //    start
    //  }
    }
    





    展开全文
  • 今日【DT大数据梦工厂视频】《第82讲:Scala中List的ListBuffer是如何实现高效遍历计算的?》土豆视频:http://www.tudou.com/programs/view/WBW9Ki9Y_1g/ 优酷视频:...

    今日【DT大数据梦工厂视频】《第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?》
    土豆视频:http://www.tudou.com/programs/view/WBW9Ki9Y_1g/

    优酷视频:http://v.youku.com/v_show/id_XMTMwNTk0NjUwNA==.html?from=y1.7-1.2

    56网视频:http://www.56.com/u63/v_MTM4MzM3MTk2.html

    (DT大数据梦工厂scala的所有视频、PPT和代码在百度云盘的链接:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group)
    本视频由王家林老师通过代码实战的方式深入浅出的讲解了
    Scala中List的ListBuffer是如何实现高效的遍历计算的。本视频的主要内容如下:
    List与ListBuffer和java中的String与StringBuffer的设计很相似,
    List与String设计默认是不可变的,var list = List[XX]形式生成的list虽然有var作修饰,
    但类型认为immutable,向其中添加元素时,会有很多中间变量产生,空间浪费很大。
    相比较而言,ListBuffer类型本可以在添加元素时避免中间变量的产生,省空间,避免频繁的GC。
    王家林老师qq群462923555 微信号18610086859

    转载于:https://www.cnblogs.com/trgaaaaa/p/4719711.html

    展开全文
  • scala进阶28-实现List高效遍历

    千次阅读 2016-08-30 00:50:46
    object ListTest { def main(args: Array[String]): Unit = { ... import scala.collection.mutable.ListBuffer var buffer = new ListBuffer[Int] for (element ) buffer += element + 1 buffer.toList } }
    object ListTest {
      def main(args: Array[String]): Unit = {
        val list = List(1, 3, 4, 5)
        increment(list)
        increment_MoreEffective(list)
        increment_MostEffective(list)
      }
    
      /**
        * 通过模式匹配加递归的模式实现,效率低,内存消耗巨大
        */
      def increment(list: List[Int]) : List[Int] = list match {
        case List() => List()
        case head :: tail => head + 1 :: increment(tail)
      }
    
      /**
        * 这种方式实现,会产生很多中间的result
        */
      def increment_MoreEffective(list: List[Int]) : List[Int] = {
        var result = List[Int]()
        for (element <- list) result = result ::: List(element + 1)
        result
      }
    
      /**
        * 借助ListBuffer,最高效的方式
        */
      def increment_MostEffective(list: List[Int]) : List[Int] = {
        import scala.collection.mutable.ListBuffer
        var buffer = new ListBuffer[Int]
    
        for (element <- list) buffer += element + 1
        buffer.toList
      }
    }

    展开全文
  • Scala深入浅出进阶经典 第82讲:Scala中List的ListBuffer是如何实现高效遍历计算的
  • 分类: scala 2015-08-16 10:49 309人阅读 评论(0) 收藏 举报 scalasparkListBuffer 目录(?)[+] 我们通过对比下列4组程序,对比,发现优缺点 第一组: 递归 代码  def main(args: Array[String]) { ...
  • 本视频由王家林老师通过代码实战的方式深入浅出的讲解了Scala中List的ListBuffer是如何实现高效遍历计算的。本视频的主要内容如下:List与ListBuffer和java中的String与StringBuffer的设计很相似,List与String...
  • 第82讲:Scala中List的ListBuffer是如何实现高效遍历计算的?学习笔记 本讲讲解对list集合类型的数据结构元素进行遍历访问时的效率问题, 对比几种算法,引出ListBuffer使用时是如何高效操作list的。 list/...
  • at scala.collection.AbstractTraversable.toList(Traversable.scala:105) at com.ifly.edu.scala.list.ListBuffer_Internals$.main(ListBuffer_Internals.scala:11) at ...
  • package com.dt.scala.listobject ListBuffer_Internals { def main(args: Array[String]) { val list = List(1,2,3,4,5,6,7,8,9) increment(list) increment_MoreEffective(list) incremen...
  • http://v.youku.com/v_show/id_XMTMwNTk0NjUwNA==.html?from=y1.7-1.2 56网视频:http://www.56.com/u63/v_MTM4MzM3MTk2.html 本讲重点 List的遍历从三种角度分析性能的优劣 1.递归调用,每次处理head元素,但因为...
  • scala学习笔记

    2019-04-03 12:09:35
    scala遍历数据结构 一、for循环 a.以符号 <- 提供生成器 eg: (1) //打印1、2、3 for (i <- 1 to 3) { println(i) } (2) //遍历数组,添加到动态数组中 for(i <- 0 until data.l...
  • 大数据系列修炼-Scala课程82

    千次阅读 2016-10-09 08:41:42
    1、Scala中的ListBuffer高效遍历操作代码实战1、Scala中的ListBuffer高效遍历操作操作代码实战1>Scala中的listBuffer可以对List中的元素进行高效遍历操作,可以有效的解决堆栈溢出的问题和遍历效率过低问题。...
  • Scala

    万次阅读 多人点赞 2017-11-27 21:05:26
    Scala安装与配置 1 安装 2 配置IDEA 二 Scala基础 1 Hello Scala 11 IDEA运行HelloScala程序 12 控制台运行HelloScala程序 2 声明值和变量 3 常用类型 31 常用类型介绍 32 常用类型结构图 4 算数操作符重载 5 ...
  • scala

    2020-09-17 15:27:49
    Scala简介及开发环境配置 一、Scala简介 二、配置IDEA开发环境 一、Scala简介 1.1 概念 Scala 全称为 Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长...
  • Scala | Scala介绍

    2020-07-23 16:08:28
    Scala介绍 官网对scala的介绍: Scala既是面向对象的语言,也是面向函数的语言。scala可以为你在做大量代码重用和...他在整个职业生涯中一直不断追求着一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉
  • 简介(Introduction)Martin Odersky和Lex Spoon在许多人看来,新的集合框架是Scala 2.8中最显著的改进。此前Scala也有集合(实际上新框架大部分地兼容了旧框架),但2.8中的集合类在通用性、一致性和功能的丰富性上...
  • Scala基础

    2021-08-25 08:41:58
    Scala基础 Scala是一门类似Java的多范式语言,集合了面向对象编程和函数式编程的特性。 使用Scala语言编写Spark应用程序的考虑: 1)Scala具有强大的并发性,支持函数式...4)Scala支持高效的交互式编程。其提供了交
  • 大数据系列修炼-Scala课程83

    千次阅读 2016-10-09 09:00:09
    1、Scala中的List实现内幕源码揭秘操作代码实战1、Scala中的List实现内幕源码揭秘操作代码实战1>Scala中的listBuffer可以对List中的元素进行高效遍历,可以有效的解决堆栈溢出的问题和遍历效率过低问题。...
  • 1. 定长数组如果你需要一个长度不变的数组,可以使用Scala中的Array.val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val strs = new Array[String](10) // 10个字符串的数组 所有元素初始...
  • Scala-Scala学习笔记

    2019-02-19 21:13:51
    scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。 scala是纯粹的面向对象的语言。java虽然是面向对象的语言,但是它不是纯粹的,因为java的基本数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,191
精华内容 1,276
关键字:

scala高效遍历