Scala同时支持可变集合和不可变集合,包含两个包:

  可变集合:scala.collection.mutable

  不可变集合:scala.collection.immutable

Scala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本

Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质

1、元组:可以存放各种不同类型的数据

  val tuple1 = (1,2,"hello",true)

  访问第一个元素:tuple1._1

  元组中最多有22个元素

2、数组

  创建定长数组

    val arr1 = new Array[Int](10)

    val arr2 = Array(1,2,3)

  创建可变数组

    val arr3 = new ArrayBuffer[Int]()

    val arr4 = ArrayBuffer[Int]()

    添加元素:arr3.append(1)

  定长数组和可变数组互相转换

    定长数组转可变数组:arr1.toBuffer  返回结果才是一个可变数组,arr1本身没有变化

    可变数组转定长数组:arr3.toArray  返回结果才是一个定长数组,arr3本身没有变化

3、列表

  创建定长列表

    val list1 = List(1,2,3) //创建时直接分配元素,默认是不可变的,可以存放任何数据

    val nil = Nil //创建一个空列表

    list1(1) //通过索引访问元素,在这访问第二个元素

  列表追加元素

    list1 :+ 4 //在列表后面添加元素,并生成新的列表

    5 :+ list1 //在列表前面添加元素,并生成新的列表

    符号 :: 表示向集合中添加元素,集合对象放在最右边

    符号 ::: 表示将集合中的每一个元素加入到另一个集合中

  创建可变列表

    val buffer1 = new ListBuffer[Int]

    val buffer2 = ListBuffer(1,2,3)

  可变列表添加元素

    buffer1.append(1)

    buffer1 += 2

    buffer1 ++= buffer2  // 符号 ++ 用于连接两个集合,::: 只能用于List类型的集合

4、映射Map

  Scala中不可变Map是有序的,可变Map是无序的,默认情况下是不可变map

  创建可变Map

    val map1 = new scala.collection.mutable.HashMap[String,Int]

    val map2 = scala.collection.mutable.Map("zhangsan" -> 10 , "lisi" -> 20)

  获取key对应的value

    map2("lisi") //如果key不存在,会抛出异常

    map2.contains("wangwu") //判断key是否存在

    map2.get(key).get //get(key)返回的是一个Option对象,Some类型或者是None

    map2.getOrElse() //如果key存在,则返回对应的值;如果key不存在,则返回指定的默认值

  可变map添加元素

    map2 += ("wangwu" -> 30)

    map2 + ("zhaoliu" -> 40 , "tianqi" -> 40)

  可变map删除元素

    map2 -= ("zhangsan" , "lisi") //可以写多个key,没有对应的key也不会报错

    

  

Scala集合总结的更多相关文章

  1. Scala集合操作

    大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储技术现在比较经典方案是使用Hadoop,不过也很多方案采用Kafka.  ...

  2. Spark:scala集合转化为DS/DF

    scala集合转化为DS/DF case class TestPerson(name: String, age: Long, salary: Double) val tom = TestPerson( ...

  3. Scala集合常用方法解析

    Java 集合 : 数据的容器,可以在内部容纳数据  List : 有序,可重复的  Set : 无序,不可重复  Map : 无序,存储K-V键值对,key不可重复 scala 集合 : 可变集合( ...

  4. Scala集合笔记

    Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更 ...

  5. Scala集合(一)

    Scala集合的主要特质 Iterator,用来访问集合中所有元素 val coll = ... // 某种Iterable val iter = col.iterator while(iter.ha ...

  6. Scala集合类型详解

    Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合 ...

  7. 再谈Scala集合

    集合!集合!一个现代语言平台上的程序员每天代码里用的最多的大概就是该语言上的集合类了,Scala的集合丰富而强大,至今无出其右者,所以这次再回过头再梳理一下. 本文原文出处:  还是先上张图吧,这是我 ...

  8. Spark记录-Scala集合

    Scala列表 Scala列表与数组非常相似,列表的所有元素都具有相同的类型,但有两个重要的区别. 首先,列表是不可变的,列表的元素不能通过赋值来更改. 其次,列表表示一个链表,而数组是平的. 具有类 ...

  9. scala集合与java集合的转换应用

    今天在业务开发中遇到需要Scala集合转为Java集合的场景: 因为业务全部是由Scala开发,但是也避免不了调用Java方法的场景,所以将此记录下来加深记忆: import scala.collec ...

  10. Scala集合学习总结

    遍历集合可以使用迭代器iterator的那套迭代方式.Seq是一个有先后次序的序列,比如数组或列表.IndexedSeq可以通过下标进行任意元素的访问.例如ArrrayBuffer. Set是一组没有 ...

随机推荐

  1. PostgreSQL函数如何返回数据集

    背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的这两个对象在PG里都叫函数. 函数由函数头,体和语言所组成,函数头主要是函数的定义,变量的定义等,函数体主要是函数的实现,函数的语 ...

  2. 【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster

    本节开始,将对 ResourceManager 中一些常见行为进行分析探究,看某些具体关键的行为,在 RM 中是如何流转的.本节将深入源码探究「启动 ApplicationMaster」的具体流程. ...

  3. JUC学习笔记

    1 进程与线程:进程指正在运行的程序,进程拥有一个完整的.私有的基本运行资源集合.它有自己的内存空间.为了便于进程之间的通信,大多数操作系统都都支持进程间通信(IPC). IPC通信包括管道.消息队列 ...

  4. 只会Jquery,后端程序员如何学会前端(webpack,react,babel,es5,es6)

    写在前 希望通过短暂的学习,可以达到一下目标: 1.能看懂现在前端的工程化手段 2.知道当前前端群体中大致的解决问题的思路 3.当前的问题在哪里,技术发展趋势是什么 4.建立起自己的认知模型 文章内容 ...

  5. springboot AOP配置

    在Springboot中添加AOP配置分两步: 最近学习AOP ,记录一下,虽然很多名字不太清楚,但是问题不大 1:在pom.xml中添加AOP依赖 2:建一个AOP配置类 下面来看下代码是怎么实现的 ...

  6. flannel 关闭SNAT

    flannel 关闭SNAT 默认情况下,flannel 访问集群外网络是通过 SNAT 成宿主机 ip 方式,在一些金融客户环境中为了能实现防火墙规则,需要直接针对 POD ip 进行进行规则配置, ...

  7. java运算符相关学习

    java运算符 面试题1: 计算2*8如何操作效率更高? 剖析: 2 * 8 => 实际上是2 * 2 * 2 * 2 2<<3 System.out.println(2<&l ...

  8. python使用pysimplegui简单制作一个exe程序

    一.安装打包程序 控制台输入: pip install pysimplegui-exemaker -- 安装exe制作库 pip install PySimpleGUI -- 安装图形化界面编辑库 二 ...

  9. notepad++ 配置Java 环境

    (1)设计新建文件的类型与编码方式: (2)安装插件NppExec (3)插件配置 (4)编辑并配置命令: 找到Advance Options; 在红中找到Java,点击 (5)运行结果查看: (6) ...

  10. Qt头文件引用其他类,主类头文件报错(1)invalid use of incomplete type 'class xx::yy' (2)forward declaration of 'class xx::yy'

    其实这个错误很蠢,由于代码是从cpp文件直接copy过来的就没仔细看,但是他这个报错很有迷惑性,我们来看图: 就这行代码,从cpp文件中复制过来的: 本来目的呢就是提升这个变量的作用域,但是呢!!!在 ...