scala集合学习

目录

概述 

数组

列表

元组

集 Set

映射Map


概述 

  1. Scala集合有三大类,分别是序列Seq、集set、映射map,所有的的集合都扩展自Iterable。

  2. 对于几乎所有的集合类,scala都提供了可变和不可变的版本,分别位于scala.collection.immutable 和scala.collection.mutable

  3. scala不可变集合是指该集合对象不可修改,每次修改都会返回一个新对象,而不会对原对象进行修改,类似于java中的String对象

  4. 可变集合就是可以直接对原对象进行修改,而不会返回新的对象,类似于java中的StringBuilder对象

数组

The ArrayBuffer class

The Array class

概念:数组是一种可变,可索引的数据集合,在scala中使用Array[t] 来表示java中的t[]

package test.scala.collection


import scala.collection.mutable.ArrayBuffer
/**
* @Classname TestArray
* @Description TODO
* @Date 2021/7/1 17:29
* @Created by ${luohuan}
*/
object TestArray {
def main(args: Array[String]): Unit = {
/**
* 不可变长数组
*/
println("不可变长数组")
val str = Array("hello","scala") //声明一个数组对象
val first=str(0)//读取第一个元素
str(1)="spark" //修改第二个元素
val strAppend=str.map(_ + "yes")//所有元素加上字符“yes”
str.foreach(x => print(x+ " "))//遍历打印数组每个元素
print("\n")
println("可边长数组")
/**
* 可边长数组
*/
val ints=ArrayBuffer(1,2,3,4)
ints(0)=10
ints.append(5)//增加元素
ints+=6//增加元素
for(i <- 0 to ints.length-1){
print(ints(i)+" ")
}
}
}


console:
不可变长数组
hello spark
可边长数组
10 2 3 4 5 6
Process finished with exit code 0

列表

  1. 概念: The List class is a linear, immutable sequence. All this means is that it’s a linked-list that you can’t modify. Any time you want to add or remove List elements, you create a new List from an existing List. 理解下来就是线性的不可变的序列,并且具有递归结构的链表特性。元素值一旦定义就不能修改,添加或删除列表元素时,都会从现有列表中           创建新列表。元素所有的数据类型都相同,这个和数组特性一样。

  2. 创建list

    val ints=List(1,2,3,4)  //定义一个list
    val strName : List[String]=List("hadoop","spark","flink") //定义一个list并指定元素类型,这种不常用

  3. 两个list合并

    val strName : List[String]=List("hadoop","spark","flink") //定义一个list并指定元素类型,这种不常用
    val strNameAppend = List("kafka","oracle")++strName//合并链接两个list

  4. list增加元素

    val ints=List(1,2,3,4)  //定义一个list
    val intsAppend=0 +: ints  //在头部增加单个元素

元组

  1. 概念:The Scala Set class is an iterable collection with no duplicate elements.Scala has both mutable and immutable Set classes.集是不重复元素的集合,列表中的元素是按照插入的先后顺序来组织的,但是集中的元素不会记录元素插入的先后顺序,而是以哈希的方式对元素的值进行组织,所以可以快速的找到一个元素

  2. 集的声明

    val tuple=("hadoop",1,2)//声明一个元组
    print(tuple._1)//打印该元组第一个元素

集 Set

  1. 概念:The Scala Set class is an iterable collection with no duplicate elements.Scala has both mutable and immutable Set classes.集是不重复元素的集合,列表中的元素是按照插入的先后顺序来组织的,但是集中的元素不会记录元素插入的先后顺序,而是以哈希的方式对元素的值进行组织,所以可以快速的找到一个元素

  2. 集的声明

    var testSet=Set("hadoop","spark")
    testSet+="flink"
    println(testSet.contains("flink"))

映射Map

  1. 概念: The Map class documentation describes a Map as an iterable sequence that consists of pairs of keys and values. 映射是一系列键值对的集合,建立键值之间的关系,在映射中所有的值都可以通过健来获取。
  2. 创建映射
    val study=scala.collection.mutable.Map("hadoop"->"test","spark"->"test","flink"->"test")

  3. 增加元素
    study += ("kafka"->"test")

  4. 索引值
    print(study("hadoop"))

  5. 遍历
    for((k,v) <- study) println(s"key:$k value:$v")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值