一. 数组声明

  1. 定长数组
    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)
  2. 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)

二. 数组的操作

  1. 遍历

    //正序遍历
    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,
  2. 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)
  3. 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) //带变量类型
  4. 多维数组

    //规则的多维数组
    scala> Array.ofDim[Int](2,2)
    res46: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0)) //不规则的多维数组
  5. 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中的数组的更多相关文章

  1. Scala中的数组

    数组 数组的两种声明方式,建议声明数组时指定类型. 访问数组元素时获取数组下标 数组Array类本身有很多非常方便的方法 变长数组ArrayBuffer,能够动态增加元素,也可以实现与Array的互转 ...

  2. 【Scala篇】--Scala中集合数组,list,set,map,元祖

    一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组   1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...

  3. Scala中的数组和集合操作

    package test /* 1.在scala集合中,Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如元素的遍历 * 2.Array是scala基础的数据结构, ...

  4. scala中的数组的转换操作

    1.共有两种操作 转换成一种新的数组 2.yield转换 3.函数式编程转换

  5. Programming In Scala笔记-第十七章、Scala中的集合类型

    本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...

  6. Scala学习(三)----数组相关操作

    数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...

  7. Scala中Zip相关的函数

    在Scala中存在好几个Zip相关的函数,比如zip,zipAll,zipped 以及zipWithIndex等等.我们在代码中也经常看到这样的函数,这篇文章主要介绍一下这些函数的区别以及使用. 1. ...

  8. [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

    1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...

  9. Scala中的If判断&While&For循环

    If 判断: object TestScalaIf { def main(args: Array[String]): Unit = { // val resutlt = judge1(-100) // ...

随机推荐

  1. zBoot/Makefile

    #上层makefile调用执行make命令,执行的应该是第一个目标allHEAD = head.oSYSTEM = ../tools/zSystem#LD = gcc#TEST = -DTEST_DR ...

  2. C函数及指针学习2

    1.break  永久终止循环,continue 结束当前循环 2.switch 每个case标签要有唯一值,(且为常量或常量表达式) 不加break 时执行流会贯穿整个case 标签 3 赋值操作符 ...

  3. UVa 814邮件传输代理的交互

    好吧,终于知道原来string有这么多用法,map可以通过vector来映射多个数 #include <iostream> #include <string> #include ...

  4. Linux内核编译和运行(转-段玉磊)

    内核获取网站:https://www.kernel.org/pub/linux/kernel/ 步骤如下: 1.打开终端,更改用户权限为root.具体做法是在终端输入sudo su,然后按提示输入密码 ...

  5. POJ2125 Destroying The Graph (最小点权覆盖集)(网络流最小割)

                                                          Destroying The Graph Time Limit: 2000MS   Memo ...

  6. POJ2112 Optimal Milking (网络流)(Dinic)

                                             Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K T ...

  7. HDU-4777 Rabbit Kingdom(区间更新求和)

    题目大意:给一个n个整数的数列,q次询问,每次询问区间[l,r]中与区间中其它数互质的数的个数.. 题目分析:离线处理,这里以询问区间的左端点从小到大的顺序为例.为了叙述方便,用f(l,r)表示区间[ ...

  8. kuangbin_ShortPath H (POJ 3660)

    本来想自己写个bfs让他顺着胜负边爬 走到拐弯处就判定无法确定次序 然后我发现有多余的边并不会自己省略掉 要写个O(n^3)的删掉多余边这都不如Floyd了 看奚政学长写的是拓扑序也能解 然后在理解看 ...

  9. Sublime Text 下配置python

    Sublime Text 2作为一款轻量级的编辑器,特点鲜明,方便使用,而且支持多语言.  一.control+B方式 1. 在工具栏点击Preferences,打开Browse Packages.在 ...

  10. 011. asp.net内置对象

    Response对象: Response代表了服务器响应对象, 主要用于将数据从服务器发送回浏览器; 每次客户端发出一个请求的时候,服务器就会用一个响应对象来处理这个请求,处理完这个请求之后,服务器就 ...