Scala(四) —— 集合
一、List
var x = List(1,2,3,4)
//x:List[Int] = List(1, 2, 3, 4)
var y = List("x","y","z")
//y: List[String] = List(x, y, z)
0 :: x
//res6: List[Int] = List(0, 1, 2, 3, 4)
x ::: y
//List[Any] = List(1, 2, 3, 4, x, y, z)
scala> "x"::"y"::"z"::Nil
res9: List[String] = List(x, y, z)
x.head //获取第一个元素
x.tail //获取除第一个元素的其他元素
x.isEmpty //判断该列表是否为空
字符串转List
var a = "HelloWorld,2018"
//a: String = HelloWorld,2018
a.toList
//res0: List[Char] = List(H, e, l, l, o, W, o, r, l, d, ,, 2, 0, 1, 8)
filter函数
a.toList.filter(x => Character.isDigit(x))
res1: List[Char] = List(2, 0, 1, 8)
//另一种简写方式
a.toList.filter(_.Character.isDigit(x))
takeWhile函数
a.toList.takeWhile(x => x!='d')
res2: List[Char] = List(H, e, l, l, o, W, o, r, l)
map函数
var a = List(1,2,3,4)
a.map(x => x % 2 == 0)
a.map(_%2 == 0)
var b = List(6,7,8)
var p = List(a,b)
a.map(_.filter(_%2 == 0))
//res14: List[List[Int]] = List(List(2, 4), List(8))
flatMap
a.flatMap(_.filter(_%2 == 0))
//res15: List[Int] = List(2, 4, 8)
reduce函数
a.reduce((x,y) => x+y)
//等价于
a.reduce(_+_)
foldLeft函数
a.fold(0)((x,y) => x+y)
//等价于
a.fold(0)(_+_)
二、Tuple元组
元组相当于数据库中的记录,可以放各种不同类型的值
val a = (1,2,3,4)
a._1 //访问元组中第一个元素
a._2 //访问元组中第二个元素
val b = (1,"fzj","math",95)
例子1:返回一条记录,计算一个列表的元素个数、元素之和,元素的平方和
val a = (1,2,3,4)
def sum(list:List[Int]):(Int,Int,Int)={
list.foldLeft(0,0,0)((x,y) => (x._1 + 1,x._2 + y,x._3 + y*y))
}
三、Set
var x = Set(1,2,3,4)
四、Map
(1) 创建Map
var x = Map("one" -> "1","two" -> "2")
var x:Map[String,String] = Map()
(2) 添加key-value
x += ("three" -> "three")
(3) 合并
使用 ++运算符 或 Map.++()方法来连接两个Map
var colors = color1 ++ color2
var colors = color1.++(color2)
(4) 遍历
val sites = Map("one"->"one","two"->"two","three"->"three")
sites.keys.foreach{
i =>
println("key="+i+",value="+sites(i))
}
Scala(四) —— 集合的更多相关文章
- Scala:集合类型Collection和迭代器
http://blog.csdn.net/pipisorry/article/details/52902549 Scala Collection Scala 集合分为可变的和不可变的集合. 可变集合可 ...
- Scala数组| 集合
arrays :+ 5尾部 头部5 +: arrays TODO 声明不可变数组,不能删; 默认情况下,scala中集合的声明全都是不可变的 val arrays: Array[Int] = Ar ...
- scala 可变集合与内存清理的关系
留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错 ...
- Scala学习——集合的使用和“_”的一些使用(中)
1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...
- Scala(四)【集合基础入门】
目录 一.Array 二. List 三.Set 四.Tuple 五.Map 一.Array package com.bigdata.scala.day01 /** * @description: 不 ...
- Scala学习——集合
Scala集合 一.数组 package top.ruandb.scala.Course04 object ArrayApp { def main(args: Array[String]): Unit ...
- scala中集合的交集、并集、差集
scala中有一些api设计的很人性化,集合的这几个操作是个代表: 交集: scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法 sc ...
- 用Scala实现集合中相邻元素间的差值
欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a ...
- 【Scala篇】--Scala中集合数组,list,set,map,元祖
一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组 1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...
随机推荐
- 关于在centos7 64为引用android so引发的问题修复
背景: 公司有解码的app,解码库位c++编写so动态库. 之前做过一版在调用html5摄像头,然后提取图像进行解码,后面因为图像质量不佳放弃. 最近 因为小程序api有更新 可以获取到相对清晰的图像 ...
- layui select使用问题
1.需要引用form模板 layui.use(['form'], function () { var form = layui.form; }); 2.html代码 <div class=&qu ...
- 酒店管理系统ER图
- Raft协议实战之Redis Sentinel的选举Leader源码解析
这可能是我看过的写的最详细的关于redis 选举的文章了, 原文链接 Raft协议是用来解决分布式系统一致性问题的协议,在很长一段时间,Paxos被认为是解决分布式系统一致性的代名词.但是Paxos难 ...
- webpack 解决 semantic ui 中 google fonts 引用的问题
semantic ui css 的第一行引用了 google web font api,由于不可告人而又众所周知的原因,这条链接在国内无法访问: @import url('https://fonts. ...
- react-native模拟机调试步骤详解 ——亲测有效!!!!
步骤 1 下载安装夜神模拟器,去夜神官网下载即可!然后安装完成!进入到初始化项目的目录,打开cmd命令,运行adb connect 127.0.0.1:62001 链接模拟器 2 链接完成之后,运行安 ...
- [Swift]LeetCode36. 有效的数独 | Valid Sudoku
Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to th ...
- Build Assimp library for Android
Build Assimp library for Android 首先各路教程中有推荐使用 NDK 或者 STANDALONE TOOLCHAIN 编译的,根据我的理解,这两种方式都是可以的,如果能直 ...
- iOS学习——输入验证码界面封装
在很多App中都有输入验证码的功能需求,最近项目需要也有这个功能.做完之后简单整理了一下,将实现的基本思路做下记录.实现后的效果大致如下图所示,当四位签到码全部输入时,提交按钮是可以提交的,否则提交按 ...
- 利用Grafana展示zabbix数据
一.系统搭建(以Centos7为例)因为我们的主要目的是展示zabbix的数据,所以建议大家直接在zabbix的服务器上搭建这个系统,亲测两系统无冲突,这样部署的好处是两系统间的数据传输更快,前端展示 ...