2. scala中的数组
一. 数组声明
- 定长数组
scala> new Array[String](5)
res1: Array[String] = Array(null, null, null, null, null) scala> Array("a","b",1)
res4: Array[Any] = Array(a, b, 1)
- ArrayBuffer
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer scala> b += 11
res0: b.type = ArrayBuffer(11) scala> val arr2 = Array(22,23)
arr2: Array[Int] = Array(22, 23) scala> b ++= arr2
res1: b.type = ArrayBuffer(11, 22, 23) scala> b.insert(1,0)
scala> b
res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(11, 0, 22, 23) scala> b.remove(2)
scala> b
res6: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(11, 0, 23)
二. 数组的操作
遍历
//正序遍历
scala> 0 until b.length
res7: scala.collection.immutable.Range = Range(0, 1, 2)
scala> for(i <- 0 until b.length) print(b(i)+",")
11,0,23, //逆序遍历
scala> (0 until b.length).reverse
res10: scala.collection.immutable.Range = Range(2, 1, 0)
scala> for(i <- (0 until b.length).reverse) print(b(i)+",")
23,0,11, //简单遍历
scala> for(i <- b) print(i+",")
11,0,23,
filter,map与yield,守卫
for循环中使用守卫过滤元素,用yield产生集合的效果和对数组对象使用filter再使用map的效果相同scala> for(i <- b if i%2==1) yiel
d i*2
res17: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 46) scala> b.filter(_%2 == 1).map(_*2)
res15: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 46)
sum,max,sortWith,mkString
scala> val arr = Array(1,2,3)
arr: Array[Int] = Array(1, 2, 3) scala> arr.sum
res28: Int = 6 scala> arr.max
res29: Int = 3 scala> arr.sortWith(_>_)
res38: Array[Int] = Array(3, 2, 1) // Array用mkString显示内容好,ArrayBuffer使用toString显式好
scala> arr.mkString(",")
res39: String = 1,2,3 scala> arr.toString
res40: String = [I@22ab5262 scala> buffer.mkString(",")
res41: String = 11,34,23 scala> buffer.toString
res42: String = ArrayBuffer(11, 34, 23) //带变量类型多维数组
//规则的多维数组
scala> Array.ofDim[Int](2,2)
res46: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0)) //不规则的多维数组scala的ArrayBuffer和java的ArrayList转换
import java.io.{BufferedReader, InputStreamReader} import scala.collection.mutable.ArrayBuffer
import scala.collection.JavaConversions.bufferAsJavaList //隐士转换 val cmd = ArrayBuffer("ls","-al","/home/lj")
val builder: ProcessBuilder = new ProcessBuilder(cmd) //ProcessBuilder接受ArrayList,隐士转换后可接受ArrayBuffer
val process: Process = builder.start()
val reader: BufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream))
var str = "";
while((str=reader.readLine())!=null)
println(str)
2. scala中的数组的更多相关文章
- Scala中的数组
数组 数组的两种声明方式,建议声明数组时指定类型. 访问数组元素时获取数组下标 数组Array类本身有很多非常方便的方法 变长数组ArrayBuffer,能够动态增加元素,也可以实现与Array的互转 ...
- 【Scala篇】--Scala中集合数组,list,set,map,元祖
一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组 1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...
- Scala中的数组和集合操作
package test /* 1.在scala集合中,Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如元素的遍历 * 2.Array是scala基础的数据结构, ...
- scala中的数组的转换操作
1.共有两种操作 转换成一种新的数组 2.yield转换 3.函数式编程转换
- Programming In Scala笔记-第十七章、Scala中的集合类型
本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...
- Scala学习(三)----数组相关操作
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...
- Scala中Zip相关的函数
在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等.我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用. 1. ...
- [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组
1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...
- Scala中的If判断&While&For循环
If 判断: object TestScalaIf { def main(args: Array[String]): Unit = { // val resutlt = judge1(-100) // ...
随机推荐
- Spring中@Transactional用法深度分析
引言: 在Spring中@Transactional提供一种控制事务管理的快捷手段,但是很多人都只是@Transactional简单使用,并未深入了解,其各个配置项的使用方法,本文将深入讲解各个配置项 ...
- C函数及指针学习2
1.break 永久终止循环,continue 结束当前循环 2.switch 每个case标签要有唯一值,(且为常量或常量表达式) 不加break 时执行流会贯穿整个case 标签 3 赋值操作符 ...
- spring mvc 重定向传参
参考链接如下: http://bbs.csdn.net/topics/391034118?page=1 自己的示例程序: 详细页面提交一个修改动作,修改完成后跳转到检索页面,把检索条件重新赋值给检索页 ...
- Codeforces Round #142 (Div. 2)
A. Dragons 按\(x\)排序. B. T-primes \(x\)是平方数,且根\(\sqrt{x}\)是个质数. C. Shifts 枚举列的位置,对于每行来说,最多只会涉及4个列. D. ...
- 【HNOI2004】【P1365】L语言
tire水题,%Menci 原题: 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章.一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成. ...
- [POI 2008]Mafia
这题目写了我好长时间,但还是几乎(不要在意细节)一遍 A 了喵~ 据说有代码奇短的,Orz 思路巧妙的大爷 想我这种 Brute Force 写写的傻 X 真是代码量飞起来了耶,喵~ 如果把每个人看成 ...
- 黑马程序员——JAVA基础之函数,重载,内存结构
------- android培训.java培训.期待与您交流! ---------- 函数: 什么是函数? • 函数就是定义在类中的具有特定功能的一段独立小程序. • 函数也称为方法. 函数的格 ...
- C# 数组,ArrayList与List对象的区别
在C#中,当我们想要存储一组对象的时候,就会想到用数组,ArrayList,List这三个对象了.那么这三者到底有什么样的区别呢? 我们先来了解一下数组,因为数组在C#中是最早出现的. 数组 数组有很 ...
- EntityValidationErrors
关于如何查看 EntityValidationErrors 详细信息的解决方法 我们在 EF 的编程中,有时候会遇到这样一个错误: 但是,按照他的提示 "See 'EntityValidat ...
- .NET垃圾回收 – 非托管资源
前面一篇文章介绍了垃圾回收的基本工作原理,垃圾回收器并不是可以管理内存中的所有资源.对于所有的托管资源都将有.NET垃圾回收机制来释放,但是,对于一些非托管资源,我们就需要自己编写代码来清理这类资源了 ...