1、空格加_可以表示函数的原型

命令行代码:

scala> def fun1(name:String){println(name)}
fun1: (name: String)Unit scala> val f = fun1 _
f: String => Unit = $$Lambda$1095/23837627@ae3764 scala> f("spark")
spark

2、其他_的使用

 package com.dtspark.scala.basics
/**
* 1,在Scala的集合体系中Iterable是共同的trait,Iterable要求继承者实现一些共同的方法,例如对元素的遍历
* 2,Array是一个非常基础的数据结构,不从属于Scala集合的体系;
* 3,Scala的集合体系中集合分为可变集合和不可变集合
* 不可变的集合在Scala.collection.immutable包中,
* 可变的集合在Scala.collection.mutable包中
* 4,list是元素的列表集合,是不可变的
* 第一点,list中的head是指第一个元素,tail是指剩下的元素构成的list集合
* 第二点,使用::这个操作符来把list和其他的元素进行组拼来构建新的List
* 第三点,如果集合中没有元素的话,此时为Nil;如果list中只有一个元素,那么head就是这个元素本身,tail操作就会放回Nil
* 5,LinkedList是元素可变的列表
* 6,set是元素不可重复的集合,且元素是无序的,hashSet中的元素不可变,不可重复,不能保证顺序
* 7,LinkedHashSet维护元素的插入顺序
* 8,sortedSet是排序的集合
* 9,"_"在map中的使用
* 10,map与flatMap的区别
*/
object Functional_Iterable {
def main(args: Array[String]): Unit = {
val range = 1 to 10
val list = List(1,2,3,4,5)
println(list.head)
println(list.tail)//tail是指剩下的元素构成的list集合
println(0::list)//把0加在list前 var linkedList=scala.collection.mutable.LinkedList(1,2,3,4,5)
println(linkedList.elem)//取第一个元素
println(linkedList.tail) while(linkedList!=Nil){
println(linkedList.elem)
linkedList=linkedList.tail
} println(linkedList)
val copied = linkedList.+:(9)
println(copied)
val set =Set(1,2,3,5,4)
println(set) val setMore =set+1//还是原来的set,因为元素不能重复
println(setMore) val hashSet = scala.collection.mutable.HashSet(1,2,3)//hashSet中的元素不可变,不可重复,不能保证顺序
hashSet+=5
hashSet+=50
println("hashSet:"+hashSet) val linkedHashSet = scala.collection.mutable.LinkedHashSet(1,2,3)//LinkedHashSet维护元素的插入顺序
linkedHashSet+=5
linkedHashSet+=50
linkedHashSet+=4
println(linkedHashSet) val sortedSet=scala.collection.mutable.SortedSet(1,2,3,5,56,4)//自动排序
println(sortedSet)
println(List("He is into Spark","Scala is powerful").map { x => x.split(" ")})//一个对象返回一个列表
//.map{}.flatten 等于 .flatMap
/**
*Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象
*而flatMap函数则是两个操作的集合——正是“先映射后扁平化”
*操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象
*操作2:最后将所有对象合并为一个对象
*/
println(List("He ","spark").map { x => x.split(" ")}.flatten)
println(List("He is into Spark","Scala is powerful").flatMap { x => x.split(" ")}.map { x => (x,1) }.map(x=>x._2).reduce((x,y)=>x+y))
println(List("He is into Spark","Scala is powerful").flatMap { _.split(" ")}.map { (_,1) }.map(x=>x._2).reduce(_+_))
println(List("He is into Spark","Scala is powerful").flatMap { x => x.split(" ")}.map { x => (x,1) }.map(_._2).reduce(_+_))
println(List("He is into Spark","Scala is powerful").flatMap { x => x.split(" ")}.map { x => (x,1) }.map(x=>x._2).reduce(_+_)) //"_"占位符操作,当=>后面只有一个元素时,可以省略x=>和后面的x,用"_"来表示; x => x.split(" ")可变成_.split(" ")
List(0,1,2,3).foreach { x => println(x) }
List(0,1,2,3).foreach { println(_) }
List(0,1,2,3).foreach { println _ }
List(0,1,2,3).foreach { println }
List(0,1,2,3).foreach (println) }
}

Scala学习——集合的使用和“_”的一些使用(中)的更多相关文章

  1. Scala学习——集合

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

  2. 【Scala】Scala学习资料

    Scala学习资料 java 树形 分类器_百度搜索 决策树分类器-Java实现 - CSDN博客 KNN分类器-Java实现 - CSDN博客 学习:java设计模式—分类 - 飞翔荷兰人 - 博客 ...

  3. Scala学习教程笔记三之函数式编程、集合操作、模式匹配、类型参数、隐式转换、Actor、

    1:Scala和Java的对比: 1.1:Scala中的函数是Java中完全没有的概念.因为Java是完全面向对象的编程语言,没有任何面向过程编程语言的特性,因此Java中的一等公民是类和对象,而且只 ...

  4. Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合

    前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...

  5. Spark基础-scala学习(五、集合)

    集合 scala的集合体系结构 List LinkedList Set 集合的函数式编程 函数式编程综合案例:统计多个文本内的单词总数 scala的集合体系结构 scala中的集合体系主要包括:Ite ...

  6. Scala 学习之路(六)—— 常用集合类型之 List & Set

    一.List字面量 List是Scala中非常重要的一个数据结构,其与Array(数组)非常类似,但是List是不可变的,和Java中的List一样,其底层实现是链表. scala> val l ...

  7. Scala 学习之路(五)—— 集合类型综述

    一.集合简介 Scala中拥有多种集合类型,主要分为可变的和不可变的集合两大类: 可变集合: 可以被修改.即可以更改,添加,删除集合中的元素: 不可变集合类:不能被修改.对集合执行更改,添加或删除操作 ...

  8. Scala学习十三——集合

    一.本章要点 所有集合都扩展自Iterable特质; 集合有三大类,分别为序列,集和映射; 对于几乎所有集合类,Scala都同时提供可变和不可变的版本; Scala列表要么是空的,要么拥有一头一尾,其 ...

  9. scala学习笔记:理解并行集合par

    scala> (1 to 5).foreach(println(_)) 1 2 3 4 5 scala> (1 to 5).par.foreach(println(_)) 3 1 4 2 ...

随机推荐

  1. Asp.Net北大青鸟总结(四)-使用GridView实现真假分页

    这段时间看完了asp.net视频.可是感觉到自己的学习好像没有巩固好,于是又在图书馆里借了几本关于asp.net的书感觉真的非常好自己大概对于asp.net可以实现主要的小Demo.可是我知道仅仅有真 ...

  2. eclipse中三大利器

    eclipse中两大利器: 首先说下用eclipse开发工具.进行java代码,开发的时候,我们开发完成以后.需要测试.大部分我们用Junit测试工具.可是内部的代码覆盖率.和结构我们看的不是那么详细 ...

  3. rpm包查看和解压(转)

    From:http://www.51testing.com/html/57/28557-205195.html 查看rpm包内容: rpm -qpl *.rpm 解压rpm包: rpm2cpio *. ...

  4. 【BZOJ4399】魔法少女LJJ 线段树合并

    [BZOJ4399]魔法少女LJJ Description 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的 ...

  5. 九度OJ 1032:ZOJ (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4569 解决:2561 题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的 ...

  6. protobuf json xml比较

    1 protobuf/xml/json对比 从数据的存储格式的角度进行对比 假如要存储一个键值对: {price:150} 1.1 protobuf的表示方式 message  Test { opti ...

  7. Python中高层次的数据结构,动态类型和动态绑定,使得它非常适合于快速应用开发,也适合于作为胶水语言连接已有的软件部件。

    https://github.com/jhao104/proxy_pool/blob/master/doc/introduce.md 3.代码模块 Python中高层次的数据结构,动态类型和动态绑定, ...

  8. 应用索引技术优化SQL 语句(转)

    原文出处 一.前言 很多数据库系统性能不理想是因为系统没有经过整体优化,存在大量性能低下的SQL 语句.这类SQL语句性能不好的首要原因是缺乏高效的索引.没有索引除了导致语句本身运行速度慢外,更是导致 ...

  9. [IR课程笔记]Hyperlink-Induced Topic Search(HITS)

    两个假设 1. 好的hub pages: 好的对某个主题的hub pages 链接许多好的这个主题的authoritative pages. 2. 好的authoritative pages: 好的对 ...

  10. Java for LeetCode 082 Remove Duplicates from Sorted List II

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...