Scala集合总结
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集合总结的更多相关文章
- Scala集合操作
大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: 1.数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储技术现在比较经典方案是使用Hadoop,不过也很多方案采用Kafka. ...
- Spark:scala集合转化为DS/DF
scala集合转化为DS/DF case class TestPerson(name: String, age: Long, salary: Double) val tom = TestPerson( ...
- Scala集合常用方法解析
Java 集合 : 数据的容器,可以在内部容纳数据 List : 有序,可重复的 Set : 无序,不可重复 Map : 无序,存储K-V键值对,key不可重复 scala 集合 : 可变集合( ...
- Scala集合笔记
Scala的集合框架类比Java提供了更多的一些方便的api,使得使用scala编程时代码变得非常精简,尤其是在Spark中,很多功能都是由scala的这些api构成的,所以,了解这些方法的使用,将更 ...
- Scala集合(一)
Scala集合的主要特质 Iterator,用来访问集合中所有元素 val coll = ... // 某种Iterable val iter = col.iterator while(iter.ha ...
- Scala集合类型详解
Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合 ...
- 再谈Scala集合
集合!集合!一个现代语言平台上的程序员每天代码里用的最多的大概就是该语言上的集合类了,Scala的集合丰富而强大,至今无出其右者,所以这次再回过头再梳理一下. 本文原文出处: 还是先上张图吧,这是我 ...
- Spark记录-Scala集合
Scala列表 Scala列表与数组非常相似,列表的所有元素都具有相同的类型,但有两个重要的区别. 首先,列表是不可变的,列表的元素不能通过赋值来更改. 其次,列表表示一个链表,而数组是平的. 具有类 ...
- scala集合与java集合的转换应用
今天在业务开发中遇到需要Scala集合转为Java集合的场景: 因为业务全部是由Scala开发,但是也避免不了调用Java方法的场景,所以将此记录下来加深记忆: import scala.collec ...
- Scala集合学习总结
遍历集合可以使用迭代器iterator的那套迭代方式.Seq是一个有先后次序的序列,比如数组或列表.IndexedSeq可以通过下标进行任意元素的访问.例如ArrrayBuffer. Set是一组没有 ...
随机推荐
- JZOJ 2020.07.30【NOIP提高组】模拟
总结 本场比赛很不负责对待 暴力都没怎么打 一个半小时后才开始打题 很悲剧的只有 \(23+11+36=70\) 分 \(T1\) 4300. 装饰大楼 题目 略 思路 很无聊的找规律题 考场弃疗 \ ...
- 玫瑰花变蚊子血,自动化无痕浏览器对比测试,新贵PlayWright Vs 老牌Selenium,基于Python3.10
也许每一个男子全都有过这样的两个女人,至少两个.娶了红玫瑰,久而久之,红的变了墙上的一抹蚊子血,白的还是床前明月光:娶了白玫瑰,白的便是衣服上沾的一粒饭黏子,红的却是心口上一颗朱砂痣.--张爱玲< ...
- 免杀之:Mimikatz 免杀过杀软,思路学习
免杀之:Mimikatz 免杀过杀软 目录 免杀之:Mimikatz 免杀过杀软 1 环境准备 2 处理过程 2.1 生成原始的Mimikatz程序 2.2 定位到代码或字符串上特征绕过 2.3 定位 ...
- PostGIS之维数扩展的九交模型
1. 概述 PostGIS 是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在 SQL 中运行空间查询 PostGIS官网:About PostGIS | PostGIS ...
- LeetCode-593 有效的正方形
来源:力扣(LeetCode)链接:https://leetcode.cn/problems/valid-square 题目描述 给定2D空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个 ...
- Stable Diffusion 关键词tag语法教程
提示词 Prompt Prompt 是输入到文生图模型的文字,不同的 Prompt 对于生成的图像质量有较大的影响 支持的语言Stable Diffusion, NovelAI等模型支持的输入语言为英 ...
- DOM06~
Window 对象 BOM (浏览器对象模型) 定时器-延时函数 js 执行机制 location 对象 navigator 对象 history 对象 BOM BOM (Browser Object ...
- C# HttpClient 上传大文件带进度
在Httpclient 上传文件时 需要显示进度,需要添加 ProgressMessageHandler 在NuGet中添加 引用Microsoft.AspNet.WebApi.Client 一下是 ...
- MySql创建高性能的索引
创建高性能的索引1.树 减少数据的查询次数二叉树 平衡树 b树 节点存储key和datab+树 节点只存储key 叶子节点存储data innodb使用b+树 当页最大16kb可以存储1000个key ...
- Springboot 添加redis
在项目中常常会用到redis来缓存信息,下面就是如何在Springboot中添加redis 1:在pom.xml中添加依赖 2:配置redis 3:测试使用redis 1:在pom.xml中添加依赖, ...