Scala中的Array

复制代码
Array:数组
可修改的:ArrayBuffer
不可修改的:Array

需要导入包

Scala 复制代码
import scala.collection.mutable.ArrayBuffer
复制代码
可修改的: ArrayBuffer
Scala 复制代码
  def main(args: Array[String]): Unit = {
    //1.新建
    val arr1=ArrayBuffer(1,2,3)
    
    //2.添加
    arr1 += 4
    arr1.insert(0,100)
    
    //3.删除
    arr1 -= 3  //删除指定的元素
    arr1.remove(0)   //删除指定位置(下标)的元素
    //4.修改。通过下标来修改
    
    arr1(0) = 50  //把下标为0的元素赋值为50

//    注意:下标不能越界。有效的范围是:0 - 长度 -1
    println(arr1.length)   //length 长度 ,用来获取元素的个数
    println(arr1(10))      //IndexOutOfBoundsException
    //5.查询
    
    //5.1 判断某个元素在数组中是否存在
    println(s"50在数组中吗? ${arr1.contains(50)}")
    //5.2 找到指定元素的下标
    //    -1:表示这个元素在数组中不存在!
    println(s"500在数组中的下标是: ${arr1.indexOf(500)}")
    //6.遍历
    
//    for,foreach,iterator
//    for (i<-arr1) println(i)
//    println("--------------")
//    arr1.foreach(println)
//    println("--------------")
    val it1 = arr1.iterator
    while (it1.hasNext)
      println(it1.next())
  }

不可修改的:Array: 长度

Scala 复制代码
  def main(args: Array[String]): Unit = {
    val arr1=Array(1,2,3,4,5,6)
    arr1(0)=100
//    arr1.foreach(println)

    //数组的常用的方法(对于可变和不可变的数组都可以使用)
    //1. 截取。从原数组中,取一部分,组成一个新的数组
//    arr1.slice(起点下标,终点下标-不包括)
    val arr2=arr1.slice(2,5)
    arr2.foreach(println)
    //2.遍历.foreach
    //3.映射 map
    //Array(1,2,3)------>Array(2,4,6)
    val arr3=Array(1,2,3).map(e=>e*2)
    arr3.foreach(println)
    //4.过滤 filter
    println("-"*50)
    //留下奇数,组成一个新的数组
    val arr4=Array(2,3,4,5,6).filter(e=>e%2==1)
    arr4.foreach(println)
    //5.折叠 reduce
    println(Array(1,2,3,4).reduce((a,b)=>a+b))
}

多维数组:

最典型的多维数组就是二维数组,类似于表格。有两种定义方法:

直接定义:Array.ofDim(x,y)

从一维数组转化得来:数组: grouped

Scala 复制代码
    //多维数组
    val arr5=Array(Array(1,2,3),
      Array(4,5,6),
      Array(7,8,9))

    //9
    println(arr5(2)(2))

    //4
    println( arr5(1)(0) )

    //创建二维数组
//    val arr6=Array.ofDim[Int](3,3,3)
//    arr6(0)(0)(0)=1

    //由一维数组转化得到二维的数组
    val arr6=Array(1,2,3,4,5,6).grouped(3)//对数组中的元素,3个一组,升级为二维数组
    while (arr6.hasNext){
      val rs=arr6.next()
      println(rs(0))
    }
相关推荐
秋名RG6 分钟前
Java 核心特性一览
java·开发语言
平头哥AI33 分钟前
Day 01 | go run 跑通第一个 Go 程序,go build 留下一个能拷走的 exe
开发语言·后端·golang
葡萄城技术团队1 小时前
工业数据可视化:使用活字格 AIcoding + Three.js 构建轻量化三维设备监控大屏
开发语言·javascript·信息可视化
qiaosaifei1 小时前
JAVA老项目中有大量的类名_编译时报找不到符号错误
java·开发语言
聪明蛋子哟1 小时前
MCP协议深度落地:如何用Python/Java双语言实现统一的工具调用网关?
java·开发语言·python
一晌小贪欢2 小时前
python-第27天:Python面向对象详解
开发语言·python·数据可视化·面向对象·python办公
ZGG0032 小时前
线程池详解:从 7 大参数到生产避坑
java·数据库·后端
迪康Defender2 小时前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
16月6日-晴3 小时前
Java面向对象——接口
java·开发语言
wuyk5553 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试