zoukankan      html  css  js  c++  java
  • Scala学习——集合的使用和“_”的一些使用(中)

    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、其他_的使用

     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 }
  • 相关阅读:
    Web Ajax入门一讲
    Delphi – 我的代码之简单五子棋
    闲话 纪念我的4520G
    Delphi 我的代码之窗体移动
    破文 黑客游戏
    破文 OD常用断点
    Web 简单的开始 – Ajax + XML +DOM
    工具 – XMLSPY 和 UModel 商业版 2010v12.0有注册机
    API InterlockedCompareExchange用法
    软件工程 设计模式学习之策略模式Strategy
  • 原文地址:https://www.cnblogs.com/LazyJoJo/p/6410455.html
Copyright © 2011-2022 走看看