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

命令行代码:

  1. scala> def fun1(name:String){println(name)}
  2. fun1: (name: String)Unit
  3.  
  4. scala> val f = fun1 _
  5. f: String => Unit = $$Lambda$1095/23837627@ae3764
  6.  
  7. scala> f("spark")
  8. spark

2、其他_的使用

  1. package com.dtspark.scala.basics
  2. /**
  3. * 1,在Scala的集合体系中Iterable是共同的trait,Iterable要求继承者实现一些共同的方法,例如对元素的遍历
  4. * 2,Array是一个非常基础的数据结构,不从属于Scala集合的体系;
  5. * 3,Scala的集合体系中集合分为可变集合和不可变集合
  6. * 不可变的集合在Scala.collection.immutable包中,
  7. * 可变的集合在Scala.collection.mutable包中
  8. * 4,list是元素的列表集合,是不可变的
  9. * 第一点,list中的head是指第一个元素,tail是指剩下的元素构成的list集合
  10. * 第二点,使用::这个操作符来把list和其他的元素进行组拼来构建新的List
  11. * 第三点,如果集合中没有元素的话,此时为Nil;如果list中只有一个元素,那么head就是这个元素本身,tail操作就会放回Nil
  12. * 5,LinkedList是元素可变的列表
  13. * 6,set是元素不可重复的集合,且元素是无序的,hashSet中的元素不可变,不可重复,不能保证顺序
  14. * 7,LinkedHashSet维护元素的插入顺序
  15. * 8,sortedSet是排序的集合
  16. * 9,"_"在map中的使用
  17. * 10,map与flatMap的区别
  18. */
  19. object Functional_Iterable {
  20. def main(args: Array[String]): Unit = {
  21. val range = 1 to 10
  22. val list = List(1,2,3,4,5)
  23. println(list.head)
  24. println(list.tail)//tail是指剩下的元素构成的list集合
  25. println(0::list)//把0加在list前
  26.  
  27. var linkedList=scala.collection.mutable.LinkedList(1,2,3,4,5)
  28. println(linkedList.elem)//取第一个元素
  29. println(linkedList.tail)
  30.  
  31. while(linkedList!=Nil){
  32. println(linkedList.elem)
  33. linkedList=linkedList.tail
  34. }
  35.  
  36. println(linkedList)
  37. val copied = linkedList.+:(9)
  38. println(copied)
  39. val set =Set(1,2,3,5,4)
  40. println(set)
  41.  
  42. val setMore =set+1//还是原来的set,因为元素不能重复
  43. println(setMore)
  44.  
  45. val hashSet = scala.collection.mutable.HashSet(1,2,3)//hashSet中的元素不可变,不可重复,不能保证顺序
  46. hashSet+=5
  47. hashSet+=50
  48. println("hashSet:"+hashSet)
  49.  
  50. val linkedHashSet = scala.collection.mutable.LinkedHashSet(1,2,3)//LinkedHashSet维护元素的插入顺序
  51. linkedHashSet+=5
  52. linkedHashSet+=50
  53. linkedHashSet+=4
  54. println(linkedHashSet)
  55.  
  56. val sortedSet=scala.collection.mutable.SortedSet(1,2,3,5,56,4)//自动排序
  57. println(sortedSet)
  58. println(List("He is into Spark","Scala is powerful").map { x => x.split(" ")})//一个对象返回一个列表
  59. //.map{}.flatten 等于 .flatMap
  60. /**
  61. *Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象
  62. *而flatMap函数则是两个操作的集合——正是“先映射后扁平化”
  63. *操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象
  64. *操作2:最后将所有对象合并为一个对象
  65. */
  66. println(List("He ","spark").map { x => x.split(" ")}.flatten)
  67. 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))
  68. println(List("He is into Spark","Scala is powerful").flatMap { _.split(" ")}.map { (_,1) }.map(x=>x._2).reduce(_+_))
  69. println(List("He is into Spark","Scala is powerful").flatMap { x => x.split(" ")}.map { x => (x,1) }.map(_._2).reduce(_+_))
  70. println(List("He is into Spark","Scala is powerful").flatMap { x => x.split(" ")}.map { x => (x,1) }.map(x=>x._2).reduce(_+_))
  71.  
  72. //"_"占位符操作,当=>后面只有一个元素时,可以省略x=>和后面的x,用"_"来表示; x => x.split(" ")可变成_.split(" ")
  73. List(0,1,2,3).foreach { x => println(x) }
  74. List(0,1,2,3).foreach { println(_) }
  75. List(0,1,2,3).foreach { println _ }
  76. List(0,1,2,3).foreach { println }
  77. List(0,1,2,3).foreach (println)
  78.  
  79. }
  80. }

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. 【selenium+Python WebDriver API】之复选框顺序正选和顺序反选

    from selenium import webdriver from selenium.webdriver.common.by import By import os,time driver = w ...

  2. 模式匹配之surf----特征点检测学习_2(surf算法)

    在上篇博客特征点检测学习_1(sift算法) 中简单介绍了经典的sift算法,sift算法比较稳定,检测到的特征点也比较多,其最大的确定是计算复杂度较高.后面有不少学者对其进行了改进,其中比较出名的就 ...

  3. Linux将进程写入开机自启动

    只需将启动的命令写入/etc/rc.local 如让mongodb开机自启动: echo "/usr/local/mongodb/bin/mongod --dbpath=/usr/local ...

  4. 修改zend studio字符集

    zend studio是一款编辑PHP的很好的工具,但是它的默认字符集是GBK,如何修改成UTF-8呢? 一.修改整个编辑器的编码 其实很简单,如果你做的每一个项目都是固定的某一个字符集(如UTF-8 ...

  5. python从安装与使用pip到入门

    官方下载地址:https://www.python.org/downloads/ 下载后直接安装就可以了 再配一下环境变量, cmd运行python -V (注意,这里是大写的V) 打开python跑 ...

  6. tcp/ip (网络通讯协议)

    介绍 TCP: 传输控制协议, IP: 网际协议, TCP/IP: 供已连接互联网的计算机之间进行通信的通信协议 在tcp/ip内部 , 包含一系列处理数据通信的协议: tcp.udp.icmp.dh ...

  7. BZOJ1217: [HNOI2003]消防局的设立

    BZOJ1217: [HNOI2003]消防局的设立 Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地. 起初为了节约材料,人类只修建了n-1条道路来连接这些基地 ...

  8. (*)(转)要快速学习SSM框架,你需要一套学习曲线平滑的教程

    作者:meepo链接:https://www.zhihu.com/question/57719761/answer/156952139来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  9. mongoDB多级子文档查询

    db.getCollection('product').find({'coverage':{'$elemMatch':{'plan':{'$elemMatch':{'iscoverage':{'$in ...

  10. Java for LeetCode 103 Binary Tree Zigzag Level Order Traversal

    Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to ...