scala的数据结构

数组:array

可变可索引,元素具有相容类型的数据集合
数组直接打印为地址值。需加 (toBuffer) 进行输出
1.定长数组:Array

val arr1 = new Array[Int](8)
//默认的值都为0

//定义一个长度为3的定长数组
    val arr3 = Array("hadoop", "storm", "spark")

2.变长数组:ArrayBuffer
需要导入import scala.collection.mutable.ArrayBuffer包

val arr02 = new ArrayBuffer[Int]
	//向数组缓冲的尾部追加一个元素
    //+=尾部追加元素
    ab += 1
    //追加多个元素
    ab += (2, 3, 4, 5)
    //追加一个数组++=
    ab ++= Array(6, 7)

3.遍历数组(可用until,Range函数来按要求遍历)

 //增强for循环
    for(i <- arr)
      println(i)

4.数组转换

	//将偶数取出乘以10后再生成一个新的数组
    val res = for (e <- arr if e % 2 == 0) yield e * 10
    
    //map相当于将数组中的每一个元素取出来,应用传进去的函数
    val arr04 = arr01.map(x=>x*3)

5.常用算法

val c = Array(1,2,3)
// 求和
val sum = c.sum
//求最大值
val max = c.max
// 排序(升序)(revserse:降序)
val sort = c.sorted.reverse

元组:tuple

对多个不同类型的对象的简单封装。由_与下标来获取值(下标从1开始)
1.创建与输出

//元组的创建
val tuple1 = (1, 2, 3, "heiheihei")
println(tuple1)
//元组的创建,最大能创建22个
val tup01 = Tuple3(1,2,3)
//可以直接输出结果
println(tup01)

2.元组的遍历

    val a = Tuple3(1,2,"wh")
    println(a)
//    元组的遍历
    for(i <- a.productIterator) println(i)
    a.productIterator.foreach(println(_))

3.tomap操作
对于key-value形式的数组

 val a = Tuple2(1,"wh")
    val ar = Array(a,a,a)
    val  map = ar.toMap
    map.getOrElse(1,"jj")

容器

scala有一套丰富的容器库:
序列
集合
映射
在这里插入图片描述

序列

linerSeq:具有高效的tail与head操作
实现类:List Queue
indexseq具有高效的随机存储操作
实现类:Arraybuffer Vector

列表:List

list有头与尾的概念。tail为除去head的其他部分
1.不可变list

//创建一个不可变的集合,长度不能改变,元素也不能改变
    val lst1 = List(1,2,3)

2.可变list
导包: scala.collection.mutable.ListBuffer

//指定类型的可变list。
  val lst = ListBuffer[Int]

序列:Range

指定开头结尾与跨越长度来生成一串数字

//    生成一个1到10,间隔为2的序列
    val rang = Range(1,10,2)
    println(rang)

集合:Set

默认是不可变的。去重。
导入:import scala.collection.mutable.Set变为可变set。定义的方法一样

 val ints = Set(1,2,2)
 //添加数据
 val ints1 = ints+=3

映射:map

1.创建

//创建一个不可变得Map
val map01 = Map[String,Int]("james"->20,"luce"->22)
//构造可变映射
val map2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 20)

2.获取值

   val map2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 20)
//    添加
    map2+=("jack"->33)
//    获取,若没有值,则进行取代
    map2.getOrElse("jack",0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值