Scala语言之数据集合(5)

简介:

==> Scala 中的数据集合:Map、列表、序列、集

==> 集合有两种: 可变集合,不可变集合

        ---> 可变集合    可以对集合进行修改操作

        ---> 不可变集合    集合从不改变,因此可以安全的共享其引用


==> Map

        ---> 可变

1
val  employeeInfo  =  scala.collection.mutable.Map( "name" -> "Tom" "age" -> 25 "gender" -> "man" )

        ---> 不可变

1
val  employeeInfo  =  scala.collection.immutable.Map( "name" -> "Tom" "age" -> 25 "gender" -> "man" )


        ---> 操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
val  employeeInfo  =  scala.collection.mutable.Map( "name" -> "Tom" "age" -> 25 "gender" -> "man" )
 
// 获取集合中的值
employeeInfo( "name" )        
// 若 Key 不存在,会抛出 Exception,因此,需要进行判断
if  (employeeInfo.contains( "girlfriend" )){
     employeeInfo( "girlfriend" )
} else {
     - 1
}
 
// 可以简写成
employeeInfo.getOrElse( "girlfriend" , - 1 )
 
// 可以修改可变集合中的值
employeeInfo( "age" =  28
 
// 也可以添加字数
employeeInfo + =  "girlfriend"  ->  "如花"


==> 列表

        ---> 可变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import  scala.collection.mutable
 
// 定义一个可变列表
val  testList  =  mutable.LinkedList( 1 , 2 , 3 , 4 , 5 )
 
// 对列表进行操作: 将列表中的每个值 乘以 2
// 首先定义一个指针指向列表的开始
var  cur  =  testList
 
// 使用循环操作列表,Nil 相当于 null
while (cur ! =  Nil){
     // elem 相当于一个变量,将循环取出的值赋给此变量,乘以2
     cur.elem  =  cur.elem *  2
     // 将指针指向下一个元素
     cur  =  cur.next
}
 
println(testList)



        ---> 不可变

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
定义一个不可变列表
val  testList  =  List( 1 , 2 , 3 , 4 )
 
定义一个空列表
val  testList 1 : List[Nothing]  =  List()
 
定义一个二维列表
val  testList 2 : List[List[Int]]  =  List(List( 1 , 2 , 3 ), List( 4 , 5 , 6 ))
 
判断列表是否为空
testList.isEmpty
 
查看列表第一个元素
testList.head
 
tail 返回除去第一个元素后其余的所有元素
testList.tail


==> 序列

        ---> Range(2,5)

        ---> (2 to 4)

        ---> (2 until 5)


==> 集 (set)    不重复元素的集合,不保留元素插入的顺序,默认以 Hash 集实现

        ---> 创建集以及操作

1
2
3
4
5
6
7
8
9
10
11
// 创建一个集
var   testSet  =  Set( 1 , 3 , 5 , 9 , 8 )
 
// 向集中添加元素
testSet + =  "hello"
 
// 判断元素是否存在
testSet contains( 3 )
 
// 判断一个集是否是它的子集
Set( 1 , 3 ) subsetOf(testSet)

        ---> 集的运算(并集、交集、差集)

1
2
3
4
5
6
7
8
9
10
11
12
13
var  testset 1  =  Set( 1 , 2 , 3 , 4 , 5 , 6 )
var  testset 2  =  Set( 4 , 5 , 6 , 7 , 8 , 9 )
// 并集
testset 1  union testset 2
res 8 :  scala.collection.immutable.Set[Int]  =  Set( 5 1 6 9 2 7 3 8 4 )
 
// 交集
testset 1  intersect testset 2
res 10 :  scala.collection.immutable.Set[Int]  =  Set( 5 6 4 )
 
// 差集
testset 1  diff testset 2
res 11 :  scala.collection.immutable.Set[Int]  =  Set( 1 2 3 )
本文转自   tianshuai369   51CTO博客,原文链接:http://blog.51cto.com/songqinglong/2072039

相关文章
|
存储 缓存 流计算
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
Flink 支持增加 DataStream KeyBy 之后 conncet BroadCastStream 形成 BroadConnectedStream,广播流内数据一般为不间断更新的上下文信息,这里介绍如果等待广播流初始化完毕再处理 Source 数据
1432 0
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
49 3
|
数据采集 XML 编译器
Scala爬虫实战:采集网易云音乐热门歌单数据
Scala爬虫实战:采集网易云音乐热门歌单数据
|
存储 分布式计算 NoSQL
Flink / Scala - 使用 Jedis、JedisPool 作为 Source 读取数据
现在有一批数据写入多台 Redis 相同 key 的队列中,需要消费 Redis 队列作为 Flink Source,为了提高可用性,下面基于 JedisPool 进行队列的消费。
1022 0
Flink / Scala - 使用 Jedis、JedisPool 作为 Source 读取数据
|
JSON 分布式计算 Hadoop
Spark-数据读取与保存(Scala版)
Spark-数据读取与保存(Scala版)
|
分布式计算 Java API
Flink / Scala - DataSource 之 DataSet 获取数据总结
数据源创建初始数据集,这里主要以 DataSet 数据源为例,例如从文件或者从 collection 中创建,后续介绍 DataStreaming 的数据源获取方法。
445 0
Flink / Scala - DataSource 之 DataSet 获取数据总结
|
消息中间件 存储 Java
Flink / Scala - DataSet & DataStream Sink 输出数据详解
一.引言 Flink 的数据处理主要分三步,第一步 Source 为数据源,分为 DataSet 和 DataStreaming ,后一步为 Transformation 负责处理和转换数据,针对不同的 DataSource,Transformation 可能会存在差异,最后一步是 sink 负责将结果输出。前面介绍了 DataSet 的 Source 和 Transformation,这里介绍下 DataSet 和 DataStreaming 的 Sink 相关 API。 Tips: 下述代码区
611 0
Flink / Scala - DataSet & DataStream Sink 输出数据详解
|
消息中间件 监控 NoSQL
Flink / Scala - DataSource 之 DataStream 获取数据总结
DataStream API 得名于特殊的 DataStream 类,该类用于表示 Flink 程序中的数据集合。你可以认为 它们是可以包含重复项的不可变数据集合。这些数据可以是有界(有限)的,也可以是无界(无限)的,但用于处理它们的API是相同的。下面将介绍 DataStream 的常见初始化方法。...
1214 0
Flink / Scala - DataSource 之 DataStream 获取数据总结
|
存储 分布式计算 NoSQL
Flink / Scala - 使用 RedisSink 存储数据
现在有一批流数据想要存储到 Redis 中,离线可以使用 Spark + foreach 搞定,由于是多流 join 且带状态,所以 SparkStreaming + foreach 也无法实现,而 Flink 不支持 foreach 操作触发 execute,这里采用 RedisSink 代替实现 foreach 逻辑。
1248 0
Flink / Scala - 使用 RedisSink 存储数据
|
存储 XML 分布式计算
小六六学大数据之 Spark(Scala)(上)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
217 0