Scala学习笔记

来源:互联网 发布:mac版qq文件夹在哪里 编辑:程序博客网 时间:2024/06/14 02:35

第3章 数组相关操作a1 29

 

3.1 定长数组 29

Array

val a = Array('a','b','c')

a: Array[Char]

 

 

3.2 变长数组:数组缓冲 30

import scala.collection.mutable.ArrayBuffer

ArrayBuffer

val b = ArrayBuffer[Int]() //声明空数组

b += 1 //尾端添加元素

b += (1,2,3) //添加多个元素

b ++= Array(6,7,8) //添加新数组

b.trimEnd(5) //移除最后5个元素

b.insert(2, 6) //在下标2之前插入元素6

b.insert(2, 7,8,9) //在下标2之前插入多个元素

b.remove(2) //删除下标2的元素

b.remove(2, 3) //删除从下标2开始,3个的元素

b.toBuffer //数组缓冲

 

 

3.3 遍历数组和数组缓冲 31

第一种遍历 直接数组赋值给循环变量

  for (i <- a){

    println(i)

  }

 

  第二种遍历 foreach套路

  a.foreach(println)

 

  第三种遍历 原始方式遍历数组下标,根据下标输出

  for(i <- 0 until a.length){

    println(i)

  } 

 

 

3.4 数组转换 32

可以使用for(i <- 表达式 if 守卫) yield 推导式方式将数组转换成想要的结果

或者 map filter 等套路

 

 

3.5 常用算法 34

sum

min

max

(Array/ArrayBuffer)sortWith(_>_) //排序

mkString

 

 

这一部分当时记得太科幻,一下没理解出来,后续补上

3.6 解读scaladoc 35

3.7 多维数组 37

3.8 与java的互操作 37

 

 

作业

1.

val a = for(i <- 1 to Random.nextInt(5)+1) yield Random.nextInt

 

2.数值数组中,奇数偶数交换

val a = ArrayBuffer(1,2,3,4,5,6,7,8,9,10)

val b = a.filter(_%2==0)

 

for(i <- 1 to b.length*2 by 2) yield b.insert(i,i)

b.foreach(println)

 

 

val a = Array(1,2,3,4,5,6,7,8,9,10)

 

def reverA(arr: Array[Int]) ={

for(i <- a.indices by 2){

val t = arr(i)

arr(i) = arr(i + 1)

arr(i + 1) = t

}

}

reverA(a)

a.foreach(println)

 

 

4.给定一个整数数组,产出一个新的数组,包含元数组中的所有正值,以原有顺序排列,之后的元素都是所有零或负值,以原有顺序排列

 

5.计算Array[Double]数组中的平均值

val a = Array(1.3,23.2,54.1,3.2)

print(a.sum/a.length)

 

6.反序排列

val c = ArrayBuffer(1,2,3,4,5)

c.reverse.foreach(print)

 

7.去重

val b = Array(1,2,3,4,5,5)

b.distinct.foreach(print)

 

8,一个有正数与负数的数组,去除数组中除一个负数以外的所有负数

//传统迭代方式

// var first = true

// var n = a.length

// var i = 0

//

// while (i < n) {

// if (a(i) >= 0) {

// i += 1

// } else {

// if (first) {

// first = false

// i += 1

// } else {

// a.remove(i)

// n -= 1

// }

// }

// }

// a.foreach(println)

 

//另一种方式

varfirst = true

varindexes = for (i <-a.indices if first || a(i) >=0)yield {

if(a(i) <0) first = false

i

}

 

valb = for(j <-indexes) yielda(j)

b.foreach(println)

 

9.找出数组中所有正数,负数的下标

vala = ArrayBuffer(1, -2, -3,4, 5, 6, -7)

valb = for (i <-a.indices if a(i) < 0) yield i

valc = for (i <-a.indices if a(i) > 0) yield i

println(b)

 

 

 

原创粉丝点击