文档章节

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
博文 218
码字总数 138040
作品 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
七天LLVM零基础入门(Linux版本)------总结

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

snsn1984
2014/02/10
0
0
scala:函数参数的传名调用(call-by-name)和传值调用(call-by-value)

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

choulanlan
2016/06/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
27
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部