Scala编程详解数组操作之数组转换.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北风网项目实战培训 // 对Array进行转换,获取的还是Array val a = Array(1, 2, 3, 4, 5) val a2 = for (ele - a) yield ele * ele // 对ArrayBuffer进行转换,获取的还是ArrayBuffer val b = ArrayBuffer[Int]() b += (1, 2, 3, 4, 5) val b2 = for (ele - b) yield ele * ele // 结合if守卫,仅转换需要的元素 val a3 = for (ele - if ele % 2 == 0) yield ele * ele // 使用函数式编程转换数组(通常使用第一种方式) a.filter(_ % 2 == 0).map(2 * _) a.filter { _ % 2 == 0 } map { 2 * _ } 使用yield和函数式编程转换数组 // 构建数组 val a = ArrayBuffer[Int]() a += (1, 2, 3, 4, 5, -1, -3, -5, -9) // 每发现一个第一个负数之后的负数,就进行移除,性能较差,多次移动数组 var foundFirstNegative = false var arrayLength = a.length var index = 0 while (index arrayLength) { if (a(index) = 0) { index += 1 } else { if (!foundFirstNegative) { foundFirstNegative = true; index += 1 } else { a.remove(index); arrayLength -= 1 } } } 算法案例:移除第一个负数之后的所有负数 // 重新构建数组 val a = ArrayBuffer[Int]() a += (1, 2, 3, 4, 5, -1, -3, -5, -9) // 每记录所有不需要移除的元素的索引,稍后一次性移除所有需要移除的元素 // 性能较高,数组内的元素迁移只要执行一次即可 var foundFirstNegative = false val keepIndexes = for (i - 0 until a.length if !foundFirstNegative || a(i) = 0) yield { if (a(i) 0) foundFirstNegative = true i } for (i - 0 until keepIndexes.length) { a(i) = a(keepIndexes(i)) } a.trimEnd(a.length - keepIndexes.length) 算法案例:移除第一个负数之后的所有负数(改良版) 欢迎访问我们的官方网站

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档