scala学习笔记(三)数组

要点:

1、若长度固定则使用Array,若长度可能有变化则使用ArrayBuffer

2、如果提供了初值则不使用new

3、用()来访问元素

4、用 for(elem <-array)来遍历元素

5、用 for(elem <-array if) … yield …来产生新数组

6、与java的互操作使用scala.collection.JavaConversions中的转换函数

 


如果要从数组的尾端开始遍历,写法为:

(0 to 10).reverse

 

如果你在一些函数的声明处看到 B>: A 这样的写法,它表示BA 的超类类型

 

一个有逼格的函数式编程的程序员,一般并不屑于使用 for yield 这样的语法而是使用

filter map这种风格。

 

想要在一个ArrayBuffer 后面添加一个Array的方式可以使用 ++这样的语法。

package demo

import scala.collection.mutable.ArrayBuffer
import scala.util.Random

/**
 * @author Administrator
 */
object ScalaArray {

  def main(args: Array[String]): Unit = {

    println(createArray(10).mkString("[", ",", "]"))

    var ar = Array(1, 2, 3, 4, 5)
    for (i <- 0 until ar.length if i % 2 == 0 && i + 1 < ar.length) {
      val a = ar(i)
      ar(i) = ar(i + 1)
      ar(i + 1) = a
    }
    println(ar.mkString("[", ",", "]"))

    ar = Array(1, 2, 3, 4, 5)
    
    val na = for (i <- 0 until ar.length) yield if (i == ar.length - 1) ar(i) else if (i % 2 == 0) ar(i + 1) else ar(i - 1)
    println(na.mkString("[", ",", "]"))
    
    val arr2 = Array(1,5,-2,8,0,-6)
    
    arr2.map { x => x>0 }
    
    
    val tmpArr = for(a <- arr2 if a>0) yield a
    val tmpArr2 = for(a <- arr2 if a<=0) yield a
    val tm = tmpArr.toBuffer++tmpArr2
    println(tm.mkString("[", ",", "]"))
    
    
    println(arr2.sum / arr2.length)
    
  }

  def createArray(n: Int) = {
    val array = ArrayBuffer[Int]()
    for (i <- 1 to n) array += Random.nextInt(n)
    array.toArray
  }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ALAN-YOUNG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值