针对集合的操作

遍历操作
  • 列表的遍历

scala> val list = List(1,2,3,4,5,6)
list: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> for (elem <- list) println(elem)
1
2
3
4
5
6
  • 也可以使用foreach进行遍历:

scala> val list = List(1,2,3,4,5,6)
list: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> list.foreach(elem => println(elem))
1
2
3
4
5
6

scala> list.foreach(println)
1
2
3
4
5
6

scala> list foreach println
1
2
3
4
5
6
  • 映射的遍历

  • 格式

for ((k , v) <- 映射) 语句块
val university2 = Map("XMU" -> "Xiamen University","THU" -> "Tsinghua University")
scala> for ((k,v) <- university2) printf("Code is : %s and name is : %s\n" , k , v)
Code is : XMU and name is : xiamen university
Code is : THU and name is : Tsinghua University
  • 也可以使用foreach来实现对映射的遍历

scala> val university2 = Map("XMU" -> "Xiamen University","THU" -> "Tsinghua University")
university2: scala.collection.immutable.Map[String,String] = Map(XMU -> Xiamen University, THU -> Tsinghua University)

scala> university2 foreach {case(k,v) => println(k+":"+v)}
XMU:Xiamen University
THU:Tsinghua University
  • 也可以尝试使用下面形式来遍历

scala> university2 foreach {kv => println(kv._1+":"+kv._2)}
XMU:Xiamen University
THU:Tsinghua University
map操作和flatMap操作
  • map操作是针对集合的典型变换操作,它将某个函数应用到集合中的每个元素,并产生一个结果集合。

scala> val books = List("hadoop","hive","hdfs")
books: List[String] = List(hadoop, hive, hdfs)

scala> books.map(s => s.toUpperCase)
res9: List[String] = List(HADOOP, HIVE, HDFS)
filter操作
  • flatMap是map的一种扩展。在flatMap中,我们会传入一个函数,该函数 对每个输入都会返回一个集合(而不是一个元素),然后,flatMap把生 成的多个集合“拍扁”成为一个集合。

scala> val books = List("hadoop","hive","hdfs")
books: List[String] = List(hadoop, hive, hdfs)
scala> books flatMap(s => s.toList)
res10: List[Char] = List(h, a, d, o, o, p, h, i, v, e, h, d, f, s)
  • 上面的flatMap执行时,会把books中的每个元素都调用toList,生成 List[Char],最终,多个Char的集合被“拍扁”成一个集合。

  • 遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。Scala中可以 通过filter操作来实现。

  • 采用filter操作过滤得到那些学校名称中包含“Tsinghua”的元素

scala> val university = Map("XMU" -> "Xiamen University","THU" -> "Tsinghua University")
university: scala.collection.immutable.Map[String,String] = Map(XMU -> Xiamen University, THU -> Tsinghua University)

scala> val filter = university filter {kv => kv._2 contains "Tsinghua"}
filter: scala.collection.immutable.Map[String,String] = Map(THU -> Tsinghua University)
  • 采用filter操作过滤得到那些学校名称中以字母“X”开头的元素:

scala> val filteOfX = university filter {kv => kv._2 startsWith "X"}
filteOfX: scala.collection.immutable.Map[String,String] = Map(XMU -> Xiamen University)
reduce操作
  • 使用reduce这种二元操作对集合中的元素进行归约,reduce包含reduceLeft和reduceRight两种操作,前者从集合的头部开始操作,后 者从集合的尾部开始操作。

scala> val list = List(1,2,3,4,5,6)
list: List[Int] = List(1, 2, 3, 4, 5, 6)

scala> list.reduceLeft(_+_)
res11: Int = 21

scala> list.reduceRight(_+_)
res12: Int = 21
  • 直接使用reduce,而不用reduceLeft和reduceRight,这时,默认采用的是reduceLeft

fold操作
  • 折叠(fold)操作和reduce(归约)操作比较类似。fold操作需要从一个初始的 “种子”值开始,并以该值作为上下文,处理集合中的每个元素。

scala> val list = List(1,2,3,4,5,6)
list: List[Int] = List(1, 2, 3, 4, 5, 6)

scala> list.fold(10)(_*_)
res13: Int = 7200
  • fold有两个变体:foldLeft()和foldRight(),其中,foldLeft(),第一个参数为 累计值,集合遍历的方向是从左到右。foldRight(),第二个参数为累计值, 集合遍历的方向是从右到左。对于fold()自身而言,遍历的顺序是未定义的, 不过,一般都是从左到右遍历。

Scala_针对集合的操作的更多相关文章

  1. Learn day3 深浅拷贝/格式化/字符串/列表/字典/集合/文件操作

    1. pass break continue # ### pass break continue # (1) pass 过 """如果代码块当中,什么也不写,用pass来 ...

  2. paip.数组以及集合的操作uapi java php python总结..

    paip.数组以及集合的操作uapi 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...

  3. IT第二十一天 - Collections、ArrayList集合、LinkedList集合、Set集合、HashMap集合、集合的操作注意【修20130828】

    NIIT第二十一天 上午 集合 1. 集合Collection存储数据的形式是单个存储的,而Map存储是按照键值对来存储的,键值对:即键+值同时存储的,类似align="center&quo ...

  4. java集合框架工具类Collections,集合的操作

    1 import java.util.*; public class asList { public static void main(String args[]) { // int arr[] = ...

  5. java集合的操作(set,Iterator)

    集合的操作 Iterator.Collection.Set和HashSet关系 Iterator<——Collection<——Set<——HashSet Iterator中的方法: ...

  6. python 集合相关操作

    集合相关操作 集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试. 去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了 关系测试指的是,测试两组数据之间的交集.差集 ...

  7. Scala 运算符和集合转换操作示例

    Scala是数据挖掘算法领域最有力的编程语言之一,语言本身是面向函数,这也符合了数据挖掘算法的常用场景:在原始数据集上应用一系列的变换,语言本身也对集合操作提供了众多强大的函数,本文将以List类型为 ...

  8. Python中集合的操作

    Python集合的基本详情 集合是无序的 集合是可变数据类型 集合属于不可哈希范围 集合自动去重 集合的操作 set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} ...

  9. Python—集合的操作、文件的操作

    1.集合的操作 2.文件的操作 1.集合的操作 定义: 1.不同元素组成,自动去重 2.无序 3.集合中的元素必须是不可变类型 1.集合的定义: >>> s1 = set('abcd ...

随机推荐

  1. oracle 使用exp命令 sys用户登录 导出表存为dmp文件

    在cmd下面,使用exp命令,格式为 exp \"sys/123456@dbname as sysdba\" file=d:\dmp\test.dmp tables=sys.tes ...

  2. gulp ( http://markpop.github.io/2014/09/17/Gulp入门教程 )

    前言 最近流行前端构建工具,苦于之前使用Grunt,代码很难阅读,现在出了Gulp,真是摆脱了痛苦.发现了一篇很好的Gulp英文教程,整理翻译给大家看看. 为什么使用Gulp Gulp基于Node.j ...

  3. Python爬虫的原理

    简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前: 一.爬虫是什么? ...

  4. django DEBUG=False

    在django的settings中. 将DEBUG 设置为False. 会出现 #python manage.py runserver 8888 CommandError: You must set ...

  5. python——ADSL拨号程序

    这是一个简单的测试实例 说说应用场景吧,都是因为电信搞的奇葩网络结构. 宿舍有若干层,每一层楼的网络拓扑如上图所示,本来是没有问题的,一个楼层接近四十个用户,都拥有一个电信给的宽带拨号账号.但是问题是 ...

  6. Servlet开发的三种方法

    第一种 实现 Servlet 接口,需要覆写 Servlet 的5个方法,并将ServletConfig对象保存到类级变量中 package app01a; import java.io.IOExce ...

  7. Python压缩文件夹 tar.gz .zip

    打包压缩生成 XXX.tar.gz 文件 import os import tarfile if os.path.exists(outputFileName): with tarfile.open(o ...

  8. [Robot Framework] SikuliLibrary的关键字执行依赖java进程,但是上次的java进程如果没有杀掉,robot framework控制台的日志出不来,怎么办?

    如果在suite的setup里面杀掉java进程:AutoItLibrary.Run | taskkill /F /IM java.exe 执行sikuli的关键字会报这样的错误: Connectio ...

  9. spring boot 无法启动

    spring boot 使用内置tomcat 报错  : Unable to start embedded Tomcat servlet container Tomcat connector in f ...

  10. 2019.01.26 codeforces 632E. Thief in a Shop(生成函数)

    传送门 题意简述:给nnn个物件,物件iii有一个权值aia_iai​,可以选任意多个.现在要求选出kkk个物件出来(允许重复)问最后得到的权值和的种类数. n,k,ai≤1000n,k,a_i\le ...