栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

scala数据集合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

scala数据集合

目录

数据集合类型

不可变数组

可变数组

不可变列表List

可变列表List

不可变Set

可变Set

不可变Map

可变Map

元组


数据集合类型

scala的数据集合类型主要有数组(Array)、链表(List)、集合(Set)、映射(Map)、元组等。都分为可变以及不可变的集合,可变集合可以更新和拓展。不可变集合也能够更新和拓展,不过不可变集合是通过创建一个新的集合从而达到改变的效果。

不可变数组

数组是有序的,可重复的,可存放不同数据类型的数据集合。

创建数组的几种方式:

val array1:Array[Int] = new Array[Int](5)//基本格式,确定数组长度
val array2 = Array(1,2,3,4,5)//快速创建
val array3 = Array.ofDim[Int](3, 3)//使用ofDim创建多维3*3数组

遍历数组的几种方式

for (i <- array) {println(s"${i}.hello")}//for直接遍历数组
for (i <- 0 until array.length) {println(s"${i}.hello")}//利用长度遍历
//在Idea中会黄色显示,可以用下面索引遍历
for (i <- array.indices) {println(s"${i}.hello")}//for用indices遍历,索引遍历

数组增改查

array(2)//查找数组第3个
array(2)=8//赋值
val array1 = 1+: array :+2//在数组第一个加1,最后追加2,并传递给array1。因为不可变数组,所以必须再传递,数组本身没有发生变化

不可变数组不能直接打印

val array2 = Array(1,2,3,4,5)
println(array2)//这样打印的是数组的内存地址

可变数组

首先导入可变数组的包,创建可变数组:

import scala.collection.mutable.ArrayBuffer
val array:ArrayBuffer[Int] = ArrayBuffer[Int](5)

数组增删改查

array.+= (2)//在末尾追加2
array.append(4)//在末尾追加4
array.insert(1,2,3)//在1的下标位置插入2,3
array(1)=2//在1的下标位置更新为2
array.remove(3)//将第四个元素删除

可变数组可以直接打印

val array = ArrayBuffer(1,2,3,4,5)
println(array)//输出ArrayBuffer(1, 2, 3, 4, 5)

注:最好不要将两个可变数组赋值,这样会使后面对其中一个数组进行改变是,另一个 也会改变。可变数据的名称实际上指向的是数组的存储空间,两个相等,使他们指向的空间一样,值也会一样。

在使用中可变数组推荐使用关键字(调用函数)对数组进行更改,不可变数组推荐使用标识符(:+2)进行更改。

不可变列表List

不可变列表是数据有顺序,但是没有序列,可存储重复数据,可存储不同数据的的一种集合。

创建列表

val list1:List[Int] =  List[Int](5)//创建长度为5的空列表
val list2 = List(1,2,3,4,5)

列表操作

val list2 = 1 :: 2 :: 3 :: 4 :: Nil//在空列表List中追加数据
val list3 = list2.+:(5)//在list2中末尾追加一个5
val list3 = list2 ::: list1//将list2,1 合并
list3.foreach(println)//遍历输出
println(list3(2))//输出list3的第三个,list这个方法底层是遍历输出第三个。没有序列的表现是不能够直接赋值修改

可变列表List

创建列表

    val list0:ListBuffer[Int] = ListBuffer[Int](5)//创建长度为5的空列表
    val list = ListBuffer(1,2,3,4)

列表操作

    list.append(5)//追加5
    list.insert(1,2)//在1位置插入2
    list(1)=4//修改直接赋值
    list.update(1,5)//修改
    list.remove(0)//删除数据

不可变Set

数据是无序的,而且数据不可重复,如果创建是有重复数据,最后输出只有一个。

    val set0:Set[Int] = Set[Int](5)//创建长度为5的空Set
    val set = Set(1,2,3,4,5)
    for (i <- set)(
      println(i)
    )//遍历输出,无序的输出

可变Set
    val set = mutable.Set(1,2,3,4,5,3)//创建Set
    set += 7//增加元素
    set -= 5//删除元素
    val set2 =set.+(9)//赋值并增加元素
    for (i <- set2)(
      println(i)
    )//创建Set
  }

不可变Map

是一个散列表,储存的内容是键值对(key-value),

    val map = Map("a" -> 12,"b" -> 42,"c" -> 52)//创建Map
    println(map)
    map.foreach(println)//遍历打印
    println(map.get("a"))//返回当前value
    println(map.getOrElse("d" , 0))//如果没有K=d,V=0
    println(map("a"))//输出K=a的v

可变Map
    val map1 = mutable.Map("a" -> 13,"b" -> 43,"c" -> 53)
    val map2 = mutable.Map("q" -> 13,"w" -> 43,"e" -> 53)
    map1.put("d" ,45)//添加元素
    map1.update("d" ,34)//将k=d的v改为34
    map1.remove("c")//删除元素
    map1 ++= map2//无则添加,有则修改值

元组

元组是一个可以存放不同数据类型的集合,是将多个无关的数据封装为一个整体。

    val tuple1 = (1,"qwe",23)//创建元组
    println(tuple1)//输出元组
    println(tuple1._1)//输出元组第一个值
    for (i <- tuple1.productIterator) {
      println(i)
    }//遍历元组

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281855.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号