上一节,我们讲了scala的安装的即一些初步方法,今天,我们来介绍一下scala里面的一些基本操作

  1.对于map的的编写,这个是广泛用于Array里面的

    val arr = Array(1,2,3,4,5)

    arr.map(_*2),则arr的数组中的每一项都*2

  2.对于从0-9找出偶数

    val arr = Array(1,2,3,4,5,6,7,8,9)

    第一种:arr.filter(x=>x%2==0)

    第二种:arr.filter(_%2==0)

    第三种:arr.filter(_%2==0).map(_*10):支持链式计算

  3.在scala中,数组并不是只有一维的,也可能会有类似于Array[(String,Int)]

    val arr = Array(("a",1),("b",2))

  4.对于List来说,如果我们是加上一个元素,则可以是+=,

    如果要是加上一个集合,则是++=

    val list1 = List(1,2,3)

    list1 += 4

    val list2 = List(5,6,7,8)

    list1 ++= list2

  5.在scala中,对于import scala.collection.immutable,不可变序列,

    对于import scala.collection.mutable._,可变序列

  6.wordsCount的练习

    第一步:val words = List("Hello tom hello jerry",

    "Hello tom kitty","Hello")

    第二步:words.map(_.split(" ")) 

      List[Array[String]] =

      List(Array(Hello,tom,hello,jerry),

      Array(Hello,tom,kitty),Array(Hello))

    第三步:words.map(_.split(" ")).flatten

      List[String] = List(Hello,tom,hello,

      jerry,Hello,tom,kitty,Hello)

    或者我们可以这样想:

      val words1 = words.flatMap(_.split(" "))

      List[String] = List(Hello,tom,

      hello,jerry,Hello,tom,kitty,Hello)

    第四步:val wordsAndOne = words1.map((_,1))

      wordsAndOne:List[(String,Int)]

      =List((Hello,1),(tom,1),(Hello,1),

      (jerry,1),(Hello,1,(tom,1),

      (kitty,1),(Hello,1))

    第五步:val grouped = wordsAndOne.groupBy(_._1)

      grouped: scala.collection.immutable.

      Map[String,List[(String, Int)]] =

      Map(kitty -> List((kitty,1)),

      tom -> List((tom,1), (tom,1)),

      Hello -> List((Hello,1), (Hello,1), (Hello,1)),

        hello -> List((hello,1)), jerry -> List((jerry,1)))

    第六步:由于上一步的里面装的map里面是一个元组,

      val result = grouped.map(t=>(t._1,t._2.size))

      result:scala.collection.immutable.Map[String,Int]

      = Map(Kitty->1,tom->2,Hello ->3,hello -> 1, jerry ->1)

    第7步:对其进行排序操作(从高到低)

      val finalResult = result.toList.sortBy(_._2).

      reverse(因为map不支持_的操作,所以我们把它变为List)

      finalResult:List[(String,Int)] = List((Hello,3),(tom,2),

      (jerry,1),(hello,1),(kitty,1))

    关于wordCount计数的简便写法:

      val lines = List("hello tom hello jerry", "hello jerry",

      "hello kitty")

      第一种方法:lines.flatMap(_.split(" ")).map((_, 1)).

      groupBy(_._1).

      mapValues(_.foldLeft(0)(_+_._2))

      第二种方法:lines.flatMap(_.split(" ")).map((_, 1)).

      groupBy(_._1).

      map(t=>(t._1, t._2.size)).toList.sortBy(_._2).reverse

  7.只有List的情况下我们才可以使用_的操作,mapValues是对value的操作

  8.foldLeft的可以进行一次相加

    对于group: scala.collection.immutable.

    Map[String,List[(String, Int)]]

    = Map(kitty -> List((kitty,1)), tom -> List((tom,1), (tom,1)),

    Hello -> List((Hello,1), (Hello,1), (Hello,1)),

     hello -> List((hello,1)), jerry -> List((jerry,1)))

    命令:group.mapValues(_.foldLeft(0)(_+_._2))

    则之后的结果是:res34: scala.collection.immutable.

    Map[String,Int]

    =Map(kitty -> 1, tom -> 2, Hello -> 3, hello -> 1, jerry -> 1)

    综上所述:foldLeft(0),初始值是0,从左到右一次相加

  9.如果一个类是用private修饰,则只能在伴生对象里面访问

   (就是两个类的名称要一样),如果是private[this],

     则这个只能在类里面使用,

    就像java一样,private[test],这个是说在test以及test的

   子包下可以访问

  10.scala中的构造函数也是独特

    class People(val id:String,var name:String){},

    此时这个就是一个构造函数

  11.其实scala中的object是单例模式,如果是 

    val d1 = Dog(), val d2 = Dog(),val d3

    = new Dog(),val d4 = new Dog(),

    则d1!=d2,d3!=d4.d1与d2会调用apply的方法,

    其实也是相当于new了一个类,              

    但是对于val d5= Dao,val d6= Dog,那么d5与d6就会相同,

    应为默认object Dog是单例模式

scala初体验-02的更多相关文章

  1. Scala初体验

    因为工作中要用到Scala了,本来前面自己还在学习Storm的,没有办法,先把Scala和Spark的这些内容学完在回去看Storm吧! 既然我们要学习Scala,那么我们不禁的要问了,什么是Scal ...

  2. 百度EChart3初体验

    由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...

  3. Scala 深入浅出实战经典 第66讲:Scala并发编程实战初体验

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  4. Java8初体验(一)lambda表达式语法

    感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解 ...

  5. .NET自带IOC容器MEF之初体验

    .NET自带IOC容器MEF之初体验   本文主要把MEF作为一种IOC容器进行讲解,.net中可用的IOC容器非常多,如 CastleWindsor,Unity,Autofac,ObjectBuil ...

  6. Java8初体验(1):lambda表达式语法

    原文出处: 一冰_天锦 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人也是刚刚开始学习Java8,所以文中肯定有错误和理解偏差的地方,希望大家帮忙指出,我会持续修改和优化 ...

  7. Online开发初体验——Jeecg-Boot 在线配置图表

    Online开发——初体验(在线配置图表) 01 通过JSON数据,快速配置图形报表 02 通过SQL数据,快速配置图形报表 03 图表模板配置,实现不同数据源图表合并展示 04 图表布局,支持单排. ...

  8. #使用abp框架与vue一步一步写我是月老的小工具(2) 后台搭建初体验

    #使用abp框架与vue一步一步写我是月老的小工具(2) 后台搭建初体验 一.续上前言 关于这个小玩意的产品思考,假设我暂时把他叫我是月老热心人 这是一个没有中心的关系链,每个人进入以后都是以自己为中 ...

  9. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

随机推荐

  1. JSON 与 XML基本了解

    简单了解JSON 和 XML ,以及他们的区别: JSON:是一种轻量级的数据交换格式,ECMA(欧洲计算机制造商协会)的一个子集:   优点:轻量级.占用宽带小.易于人的阅读和编写,便于js解析,支 ...

  2. selenium代理

    selenium.KeyDown("id=ctaskName", "d");            selenium.KeyPress("id=cta ...

  3. SharePoint 和 Windows Phone 7 开发人员培训资源

     该工具包包括单位数目: Windows Phone 7 发展简介 在本单元中,您将了解真实的消费信息存储在 SharePoint 中与你用 Visual Studio 写 Windows Phone ...

  4. 2013应届毕业生各大IT公司待遇整理汇总篇(转)

    不管是应届毕业生还是职场中人,在找工作时都必然会对待遇十分关注,而通常都是面试到最后几轮才知道公司给出的待遇.如果我们事先就了解大概行情,那么就会在面试之前进行比较,筛选出几个心仪的公司,这样才能集中 ...

  5. vm中efi模式安装windows10

    选择dvd: 界面出现“Press any key to boot from CD or DVD”时,再迅速按下任意键就OK了.

  6. 非常全面的PHP header函数设置HTTP头的示例

    突然看到这个,觉得很好,就拿过来了,如下: //定义编码 header( 'Content-Type:text/html;charset=utf-8 '); //Atom header('Conten ...

  7. Selenium入门17 selenium IDE安装及使用

    selenium IDE是firefox浏览器的一个插件,支持脚本的录制回放,关键字驱动的.界面跟robotframework很像. 实际测试中不用录制回放,不过初学者拿来看看元素是如何定位的还是有用 ...

  8. POJ-3190 Stall Reservations---优先队列+贪心

    题目链接: https://vjudge.net/problem/POJ-3190 题目大意: 有N头奶牛,每头奶牛都会在[1,1000000]的时间区间内的子区间进行挤奶.挤奶的时候奶牛一定要单独放 ...

  9. 虚拟内存映射 段分割 vm_area_struct

    http://www.cnblogs.com/huxiao-tee/p/4660352.html linux内核使用vm_area_struct结构来表示一个独立的虚拟内存区域,由于每个不同质的虚拟内 ...

  10. Java从入门到放弃——02.常量、变量、数据类型、运算符

    本文目标 理解什么是常量,什么是变量 认识八大基本数据类型 了解算数运算符.赋值运算符.关系运算符.逻辑运算符.位运算符.三元运算符 1.什么是常量与变量? 常量是相对静止的量,比如整数:1,2,3 ...