文档章节

scala学习第六天

我是菜鸟我骄傲
 我是菜鸟我骄傲
发布于 2017/02/26 09:35
字数 497
阅读 10
收藏 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: _*)
  }


}

 

© 著作权归作者所有

共有 人打赏支持
我是菜鸟我骄傲
粉丝 13
博文 224
码字总数 139926
作品 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
990
2
大数据学习资源整理

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

jacksu
2016/02/25
95
0
Scala与Clojure函数式编程语言青春焕发

在StackOverflow发布的2015开发者调查,最受程序员喜爱的开发语言中,Clojure和Scala分别位列第五和第六。排名第一的是 Swift,而Swift相比原先的Objective-C最重要的优点之一,就是对函数式...

图灵教育
2015/05/21
403
0
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

没有更多内容

加载失败,请刷新页面

加载更多

pyhanlp用户自定义词典添加实例说明

pyhanlp用户自定义词典添加实例说明 pyhanlp是python版封装的的HanLP,项目地址:https://github.com/hankcs/pyhanlp 经过测试,HanLP比nltk在中文分词和实体识别方面都更好用. 如何向pyhan...

左手的倒影
4分钟前
0
0
TypeError: 'dict_keys' object does not support indexing

在python2.x中,dict.keys()返回一个列表,在python3.x中,dict.keys()返回一个dict_keys对象,比起列表,这个对象的行为更像是set,所以不支持索引的。 解决方案:list(dict.keys())[index...

张欢19933
10分钟前
0
0
【HAVENT原创】单页面站点在 Nginx 下刷新报404 的问题

AngularJS / Vue / React 前端站点如果使用了单页面模式,在开发模式下直接使用 url 路由访问是正常的,但是在 nginx 下面会直接报 404 错误。 解决方式是加入 try_files $uri $uri/ /index....

HAVENT
14分钟前
0
0
聊聊flink的FsCheckpointStreamFactory

序 本文主要研究一下flink的FsCheckpointStreamFactory CheckpointStreamFactory flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/CheckpointStreamFactory.java /**......

go4it
15分钟前
0
0
react-native-storage(数据存储)文档介绍

中文doc:仅供参考 import Storage from 'react-native-storage'; import {AsyncStorage} from 'react-native'; var storage = new Storage({ // 最大容量,默认值1000条数据循环存储 ......

凌宇之蓝
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部