Scala语言笔记 - 第三篇(容器方法篇)
Scala语言笔记 - 第三篇(容器方法篇)
最近研究了下scala语言,这个语言最强大的就是它强大的函数式编程(Function Programming)能力,记录下最近学习的一些新的和技巧。注意:本系列博客不会从头讲解该语言的语法,而是通过一些例子讲解该语言的一些技巧,如果需要从头学习scala,建议使用该教程快速入门。
map和flapMap方法:
对于数组或者容器,scala和Python等语言类似,提供了map和flapMap等方法(目前Java8的stream方法也支持了这种用法)来方便的对容器里面的元素进行处理,并生成一个新的容器对象,来看如下代码:
/**
* Person class
* @param _name name
* @param _age age
* @param _friends firends
*/
case class Person(_name:String, _age:Int, _friends:Seq[String]){
private var name = _name
private var age = _age
private var friends = _friends
def getName() : String = this.name
def getAge() : Int = this.age
def getFriends() : Seq[String] = this.friends
}
def main(args: Array[String]): Unit = {
val li = List(Person("li",12,List("li1","li2")), Person("wang", 13, List("wang1","wang2", "wang3")),
Person("zhao", 15, List("zhao1")))
//map:将列表转换为列表嵌套列表的方式,即List(List(a,b,c), List(d,e,f), List(g,h,i))的形式
println(li.map(m => m.getFriends()))
//flatMap:将列表转换为一个一维的列表,即List(a,b,c,d,e,f,g,h,i)的形式
println(li.flatMap(m => m.getFriends()))
println("------------------------------------------------------------------")
var doubleArr = Array[Array[String]](Array("String1", "String2"),Array("World1", "World2", "World3"))
//
println(doubleArr.mkString(" "))
//表示将前面的变量转换为冒号后面的类型,这里的意思是将doubleArr拼接成单个Array
var flatArr = Array.concat(doubleArr:_*)
// 0.5, 一个冒号用来转换参数的例子。
var res = 1 / (2 : Double)
println(flatArr.mkString(" "))
println("------------------------------------------------------------------")
}
Array的打印方式和Java类似,直接进行print,打印出来的会是对象的id,在这里可以使用mkString方法生成字符串来打印,同时,请注意concat的用法,是scala中的一个黑科技用法。
Scala语言笔记 - 第三篇(容器方法篇)的更多相关文章
- Scala语言笔记 - 第一篇
目录 Scala语言笔记 - 第一篇 1 基本类型和循环的使用 2 String相关 3 模式匹配相关 4 class相关 5 函数调用相关 Scala语言笔记 - 第一篇 最近研究了下scala ...
- Scala语言笔记 - 第二篇
目录 1 Map的基础操作 2 Map生成view和transform解析 最近研究了下scala语言,这个语言最强大的就是它强大的函数式编程(Function Programming)能力,记录 ...
- Scala学习笔记(三):基础知识
有了可运行的环境,就需要写一些简单的语句来认识一下Scala,本文没有写那么详细,只是为了方便查看.唤起回忆 (1)变量的定义方法 Scala有两种变量 var val 注意:在解释器中,可以用一个之 ...
- Scala学习笔记(三):==,eq与equals的区别
== Scala中==与java中不同,它是比较值是否相等的,无论比较对象是否是相同类型 List(1, 2, 3) == List(1, 2, 3) //true 1==1.0//true equa ...
- scala编程笔记(三)类,字段和方法
类,字段和方法 类是对象的蓝图,能够通过new来创建对象.在类的定义里能够有字段和方法.统称member val还是var都是指向对象的变量(var定义的字段可又一次赋值),def定义方法,包括可运行 ...
- Scala学习笔记(三)—— 方法和函数
1. 方法 方法使用 def 定义: def 方法名(参数名:参数列表,…) :返回值类型 = { 方法结构体 } scala> def add(x : Int ,y : Int):Int = ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- Scala学习笔记(三)类层级和特质
无参方法 功能:将方法的定义转换为属性字段的定义: 作用范围:方法中没有参数,并且方法仅能通过读取所包含的对象属性去访问可变状态,而不改变可变状态,就可使用无参方法: 例子: abstract cla ...
- Hive中笔记 :三种去重方法,distinct,group by与ROW_Number()窗口函数
一.distinct,group by与ROW_Number()窗口函数使用方法 1. Distinct用法:对select 后面所有字段去重,并不能只对一列去重. (1)当distinct应用到多个 ...
随机推荐
- n皇后问题的递归和迭代版 leetcode N-Queens
题目如下图: 递归版 class Solution { public: vector<vector<string>> solveNQueens(int n) { vector& ...
- [bug] IDEA Maven 项目 Module 不加粗,无法编译
参考 https://blog.csdn.net/qq_42479920/article/details/102859244
- tigervnc报错
tigervnc报错
- 使用autotools工具用configure、make、make install编译安装linux工程的详细步骤
使用autotools工具用configure.make.make install编译安装linux工程的详细步骤 转载tmxkwzy 最后发布于2016-11-24 10:20:15 阅读数 324 ...
- Docker Swarm(九)资源限制
资源限制 docker run 針對限制容器資源有許多設置選項,但Swarm中的 docker service 是另一回事,目前只有cpu和memory的選項可以操作. 如果 docker 找不到足夠 ...
- Linux创建RAID概述
Linux创建RAID RAID概述 RAID(Redundant Array of Independent Disk)虚拟存储系统 RAID即独立冗余磁盘阵列,其思想是将多块独立的磁盘按不同的方式组 ...
- MegaCli是一款管理维护硬件RAID软件,可以通过它来了解当前raid卡的所有信息,包括 raid卡的型号,raid的阵列类型,raid 上各磁盘状态
MegaCli 监控raid状态 转载weixin_30344131 最后发布于2015-10-16 13:05:00 阅读数 简介 MegaCli是一款管理维护硬件RAID软件,可以通过它来了 ...
- STM32 中的HARDFAULT 的查找方法
http://blog.csdn.net/zyboy2000/article/details/7668331
- Jaxb的优点与用法(bean转xml的插件,简化webservice接口的开发工作量)
一.jaxb是什么 JAXB是Java Architecture for XML Binding的缩写.可以将一个Java对象转变成为XML格式,反之亦然. 我们把对象与关系数据库之间的映射称 ...
- ASP.NET Core文件上传IFormFile于Request.Body的羁绊
前言 在上篇文章深入探究ASP.NET Core读取Request.Body的正确方式中我们探讨了很多人在日常开发中经常遇到的也是最基础的问题,那就是关于Request.Body的读取方式问题,看是简 ...