惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
宝玉的分享
宝玉的分享
Google DeepMind News
Google DeepMind News
腾讯CDC
G
Google Developers Blog
Martin Fowler
Martin Fowler
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
有赞技术团队
有赞技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
美团技术团队
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志

博客园 - cindy_zl

SAP SD销售与分销模块 Agent认知框架ReAct&Plan RAG系统优化 RAG检索优化 RAG架构 SAA-C02-架构师助理级-英文版-Q1 navicat mysql创建存储过程报错 安装完kali出现中文乱码 Spark SQL是处理结构化的数据 SPARK SQL ERROR: Detected cartesian product for INNER join between logical plans报错解决方法 scala的lazy关键字 scala集合三大类(seq序列,set集,map映射)——map映射 scala集合三大类(seq序列,set集,map映射)——set集合 scala集合三大类(seq序列,set集,map映射)——list序列 scala元组及拉链操作 scala的map映射 scala数组 scala方法和涵数的声明以及方法转换成涵数 scala的基础数据类型&if条件表达式&for循环
scala-数组
cindy_zl · 2020-05-06 · via 博客园 - cindy_zl

scala默认是不可变数组,若要用变长数组,需要导入包:import scala.collection.mutable.ArrayBuffer

scala> val arr1 = new Array[Int](8)   // 用new调用的是一般类的方法,而没有使用new关键字定义的则是调用Array的静态方法

arr1: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0)

scala> val arr2 = new Array[String](8)

arr2: Array[String] = Array(null, null, null, null, null, null, null, null)

scala> println(arr1)

[I@489091bd

scala> println(arr1.toBuffer)    //使用toBuffer关键字可以把数组对象的内容转换成ArrayBuffer中来显示

ArrayBuffer(0, 0, 0, 0, 0, 0, 0, 0)

scala> val arr3 = Array("java","scala","python")

arr3: Array[String] = Array(java, scala, python)

scala> println(arr2(0)) // 与java不一样,遍历不用[],使用圆括号取下标对应里面的值 

null

scala> println(arr3(0))

java

scala> val arr3 = ArrayBuffer[Int]()// 默认是不可变,若想使用可变的,则需要导入包 import scala.collection.mutable.ArrayBuffer

                  ^

       error: not found: value ArrayBuffer

scala> import scala.collection.mutable.ArrayBuffer

import scala.collection.mutable.ArrayBuffer

scala> val arr2 = ArrayBuffer[Int]()

arr2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

scala> arr2 += 1

res4: arr2.type = ArrayBuffer(1)

scala> arr2 += (2,3,4)

            ^

       warning: method += in trait Growable is deprecated (since 2.13.0): Use `++=` (addAll) instead of varargs `+=`

res5: arr2.type = ArrayBuffer(1, 2, 3, 4)

scala> arr2 ++= Array(5,6)

res6: arr2.type = ArrayBuffer(1, 2, 3, 4, 5, 6)

scala> arr2 ++= ArrayBuffer(7,8)

res7: arr2.type = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8)

scala> for(i <- arr2) println(i)

1

2

3

4

5

6

7

8

scala> for(i <- 0 until arr2.length) println(i)

0

1

2

3

4

5

6

7

scala> for(i <- 0 until arr2.length) println(i, arr2(i))

(0,1)

(1,2)

(2,3)

(3,4)

(4,5)

(5,6)

(6,7)

(7,8)

scala> for(i <- (0 until arr2.length).reverse) println(i, arr2(i))

(7,8)

(6,7)

(5,6)

(4,5)

(3,4)

(2,3)

(1,2)

(0,1)

scala> val res = for( i <- arr2) yield i * 10   // yield的关键字可以理解为, 将 i*10的结果放在一个集合上放入到 res中。

res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 20, 30, 40, 50, 60, 70, 80)

scala> res.sum

res15: Int = 360

scala> res.max

res16: Int = 80

scala> res.sorted

res17: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 20, 30, 40, 50, 60, 70, 80)

scala> Array(3,6,1,2).sorted

res18: Array[Int] = Array(1, 2, 3, 6)