文档章节

scala学习第六天

我是菜鸟我骄傲
 我是菜鸟我骄傲
发布于 2017/02/26 09:35
字数 497
阅读 9
收藏 0
package com.learn.scala

import scala.collection.mutable.ArrayBuffer

/**
  * scala学习第六天
  * Created by zhuqing on 2017/2/26.
  */
object Day6Array {
  def main(args: Array[String]): Unit = {

    /**
      * 数组的变遍,可以像Java中Foreach 那样逐个遍历,可以按位置遍历
      */
    for (a <- this.createArray()) {
      print(a + " ")
    }
    println()
    for (a <- this.createArrayBuffer()) {
      print(a + " ")
    }
    println()
    val arr = this.createArray()

    // 0 until 10 ,是0到9的区间Range , 不包含10
    for (i <- 0 until arr.length) {
      print(arr(i) + " ")
    }
    println()
    val arrayBuffer = this.createArrayBuffer()
    for (i <- 0 until arr.length) {
      print(arr(i) + " ")
    }
    println()
    //生成带步长的区间
    println(0 until(arr.length, 2)) //打印Range(0, 2, 4, 6, 8), 步长为2
    for (i <- 0 until(arr.length, 2)) {
      print(arr(i) + " ") //打印1 3 5 7 9
    }
    println()
    //区间的翻转 ,reverse是GenSeqLike的方法,实现了它的集合都有这样的功能
    //关于Range的Api :http://www.scala-lang.org/api/current/scala/collection/immutable/Range.html
    println(0 until arr.length reverse) //Range(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)


    /**
      * 数组的转换,可以使用for循环的yield,
      */
    //去数组arr的偶数位的数并乘以2
    val arrNew = for (i <- 0 until(arr.length, 2)) yield arr(i) * 2
    //数组 yield后成为Vector
    println(arrNew.getClass); //打印class scala.collection.immutable.Vector
    //toArray转换为Array,toArray是特质GenTraversableOnce中的方法
    //Vector的Api :http://www.scala-lang.org/api/current/scala/collection/immutable/Vector.html
    println(arrNew.toArray.mkString(" ")); //2 6 10 14 18

    /**
      * 数组的另一种转换,是使用自带的Map方法
      */
      //与上面的功能相似
    val arrNew2 = arr.filter((a: Int) => {
      a % 2 != 0
    }).map((a: Int) => {
      a * 2
    })
    println(arrNew2.mkString(" ")); //2 6 10 14 18
    //与上面的功能一样,scala中的lambda可以比Java中的更简单一些,如下面"_"表示参数
    val arrNew3 = arr.filter(_%2!=0).map(_*2);
    println(arrNew3.mkString(" ")); //2 6 10 14 18

    /**
      * 数组还有一些常用的算法,sum,max,min,sort , mkString:拼接成字符串
      * 可以参考API:http://www.scala-lang.org/api/current/scala/Array.html
      * http://www.scala-lang.org/api/current/scala/collection/mutable/ArrayBuffer.html
      */
    println(arr sum)//arr的和
    println(arr max)//arr的最大值,maxBy可以自己比较最大值
    //前面的遍历数组打印,可以这样实现
    println(arr mkString(" "))
  }

  /**
    * 创建一个1到10的ArrayBuffer
    *
    * @return
    */
  def createArrayBuffer(): ArrayBuffer[Int] = {
    ArrayBuffer[Int](1 to 10: _*)
  }

  /**
    * 创建1到10的Array
    *
    * @return
    */
  def createArray(): Array[Int] = {
    Array[Int](1 to 10: _*)
  }


}

 

© 著作权归作者所有

共有 人打赏支持
我是菜鸟我骄傲
粉丝 12
博文 216
码字总数 137891
作品 0
西安
架构师
分享一个用Scala Play + Slick 开始写的一个学习的开源web app

好, 最近在學Play,用Play在這些天寫了一個初始的app,用的是Play! framework 2.x + Play slick 1.x,前端用的是,原始的bootstrap。已经开源,https://github.com/hellomaya/scala-connec...

自由之信
2016/01/24
904
2
大数据学习资源整理

github地址 后面继续更新在github utils4s scala语法学习 common库 BigData库 Spark Spark core Spark Streaming Spark SQL Spark 机器学习 Spark 其它 ES 贡献代码步骤 贡献者 utils4s包含各...

jacksu
2016/02/25
95
0
如何成为云计算大数据Spark高手

Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算大数据领域的霸主地位; 要想...

Spark亚太研究院
2014/06/13
1K
3
scala:函数参数的传名调用(call-by-name)和传值调用(call-by-value)

问题导读: 1.Scala函数参数传值调用? 2.Scala函数参数传名调用? 引言 Scala的解释器在解析函数参数(function arguments)时有两种方式:先计算参数表达式的值(reduce the arguments),再应...

choulanlan
2016/06/14
0
0
七天LLVM零基础入门(Linux版本)------总结

七天LLVM零基础入门这系列文章,为了让刚接触LLVM的人在最短的时间内快速的熟悉LLVM。这系列文章,现在经过将近一年的时间的使用,有了不少反馈的意见,现在将这些情况总结一下。 1. 在按照这...

snsn1984
2014/02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0
memcached命令行、memcached数据导出和导入

一、memcached命令行 yum装telnet yum install telent 进入memcached telnet 127.0.0.1 11211 命令最后的2表示,两位字节,30表示过期时间(秒) 查看key1 get key1 删除:ctrl+删除键 二、m...

Zhouliang6
今天
1
0
Linux定时备份MySQL数据库

做项目有时候要备份数据库,手动备份太麻烦,所以找了一下定时备份数据库的方法 Linux里有一个 crontab 命令被用来提交和管理用户的需要周期性执行的任务,就像Windows里的定时任务一样,用这...

月夜中徘徊
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部