一、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(四) —— 集合的更多相关文章

  1. Scala:集合类型Collection和迭代器

    http://blog.csdn.net/pipisorry/article/details/52902549 Scala Collection Scala 集合分为可变的和不可变的集合. 可变集合可 ...

  2. Scala数组| 集合

    arrays :+ 5尾部   头部5 +: arrays TODO 声明不可变数组,不能删; 默认情况下,scala中集合的声明全都是不可变的 val arrays: Array[Int] = Ar ...

  3. scala 可变集合与内存清理的关系

    留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错 ...

  4. Scala学习——集合的使用和“_”的一些使用(中)

    1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...

  5. Scala(四)【集合基础入门】

    目录 一.Array 二. List 三.Set 四.Tuple 五.Map 一.Array package com.bigdata.scala.day01 /** * @description: 不 ...

  6. Scala学习——集合

    Scala集合 一.数组 package top.ruandb.scala.Course04 object ArrayApp { def main(args: Array[String]): Unit ...

  7. scala中集合的交集、并集、差集

    scala中有一些api设计的很人性化,集合的这几个操作是个代表: 交集: scala> Set(1,2,3) & Set(2,4) // &方法等同于interset方法 sc ...

  8. 用Scala实现集合中相邻元素间的差值

    欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a ...

  9. 【Scala篇】--Scala中集合数组,list,set,map,元祖

    一.前述 Scala在常用的集合的类别有数组,List,Set,Map,元祖. 二.具体实现 数组   1.创建数组 new Array[Int](10) 赋值:arr(0) = xxx Array[ ...

随机推荐

  1. 修改 Docker 的 daemon.json后启动失败

    创建Harbor要把register 换成Harbor地址 vim /etc/docker/daemon.json添加{ "insecure-registries":[" ...

  2. js jq 字符串数组对象

    数组是有序的,对象是无序,数组是特殊的对象 数组 声明数组 var arr=new Array('red','blue','yellow'); //["red", "bl ...

  3. Android 混淆那些事儿

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/WmJyiA3fDNriw5qXuoA9MA 作者:l ...

  4. Vue 单文件原件 — vCheckBox

    简书原文 做东西一向奉行的是致简原则,一定要让使用者简单 这是我在使用 Vue 一段时间后尝试制作的一个小玩意 我希望可以做一堆这样的小玩意,随意组合使用,感觉挺好的 源码在最后 演示DEMO 示例: ...

  5. nginx+letsencrypt搭建https站点

    1. 申请好自己的域名 dockerhub.xxx.com,并解析好IP. 2. 安装nginx(默认开通了http) ,修改 server_name dockerhub.xxxx.com; 启动. ...

  6. C 基于数组存储的堆栈实现

    一.堆栈简介 对于需要管理的队列,主要操作是在序列的末尾插入和取出(删除)元素,有这样操作要求的序列我们称之为堆栈(Stack). 堆栈可以认为是具有一定约束的线性表,插入和删除都作用在一个称为栈顶( ...

  7. [Swift]LeetCode169. 求众数 | Majority Element

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  8. [Swift]LeetCode433. 最小基因变化 | Minimum Genetic Mutation

    A gene string can be represented by an 8-character long string, with choices from "A", &qu ...

  9. [Swift]LeetCode921.使括号有效的最少添加 | Minimum Add to Make Parentheses Valid

    Given a string S of '(' and ')' parentheses, we add the minimum number of parentheses ( '(' or ')', ...

  10. ThinkPHP 数据库操作(二) : 增删改查

    基本使用 可以直接使用数据库运行原生SQL操作了,支持 query (查询操作)和 execute (写入操作)方法,并且支持参数绑定. Db::query('select * from think_ ...