Scala学习笔记之:tuple、array、Map】的更多相关文章

map,flatMap,zip和reduce函数可以让我们更容易处理列表函数. 1 map函数map将一个函数应用于列表的每一个元素并且将其作为一个新的列表返回.我们可以这样对列表的元素进行平方: scala> list1 res3: List[Int] = List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) scala> list1.map(x=>x*x) res4: List[Int] = List(0, 1, 4, 9, 16, 25, 36, 49, 6…
基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可以让整个系统的运行更加平稳.今天要与大家分享一下限流算法和C#版本的组件. 一.令牌桶算法: 令牌桶算法的基本过程如下: 假如用户配置的平均发送速率为r,则每隔1/r秒速率将一个令牌被加入到桶中: 假设桶最多可以存发b个令牌.当桶中的令牌达到上限后,丢弃令牌. 当一个有请求到达时,首先去令牌桶获取令…
Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续更新一些切换后在开发过程中值得注意的地方.以下列举了部分,但令人印象深刻的Scala语言的不同之处,具体的代码演示样例及具体阐述见下文.  Scala中可直接调用Java代码,与Java无缝连接. 语句能够不用";"结束.且推荐不适用";". 变量声明时以var或va…
javaSE学习笔记(11)--- Map 1.Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口. 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方…
[TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成.Example:(1,1.3415,"Fred") tuple的访问 可以通过_1,_2,_3访问元组的元素 val first = tuple._1 //元组的位置从1开始,而非从0开始 拉链操作:zip 通过操作元组,可以把多个值绑在一起,以便它们能够被一起处理,可以通过zip方法完…
1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> 89, "Bob"-> 98) scores: scala.collection.immutable.Map[String,Int] = Map(Alice -> 90, Kim -> 89, Bob -> 98) 上面构造了一个不可变的Map[String, I…
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/学习. Map与Set Map和Set是ES6标准新增的数据类型. Map JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对. 但是JavaScript的对象有个小问题,就是键必须是字符串.但实际上Number或者其他数据类型作为键也…
定长数组Array 定义定长数组用Array,有如下几种方法: 初始化一个长度为8的定长数组,其所有元素默认值均为0 scala> new Array[Int](8) res0: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0) 调用静态方法,直接为数组赋值 scala> val arr2 = Array[Int](8) arr2: Array[Int] = Array(8) scala> arr2.length res16: Int = 1 scal…
第2章 变量 val,var,声明变量必须初始化:变量类型确定后不可更改 数据类型:与java有相同的数据类型,在scala中数据类型都是对象 特殊类型:Unit:表示无值,只有一个实例值写出(),相当于void:Null:null:Nothing:null(表示非正常执行) 标识符命名规范:大于1个操作符可以作为标识符:反引号包含的任意字符,包含关键字 scala关键字 第3章 运算符 没有java中的++,--,使用+=,-=替代 键盘输入:StdIn.readxxx 第4章 流程控制 if…
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点:但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法. 一.scala学习…
强烈推荐参考该课程:http://www.runoob.com/scala/scala-tutorial.html 1.   Scala概述 1.1.  什么是Scala Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性.Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序. 1.2.  为什么要学Scala 1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验. 2.速度快:Scala…
一.高阶函数 --------------------------------------------------- 1.作为值的函数:在Scala中,函数是头等公民,就和数字一样. import scala.math._ val num =3.14 val fun = ceil _ //这段话将num 设置为3.14 ,fun设置为ceil函数.ceil函数后的_意味着你确实指的是这个函数,而不是 碰巧忘记了给他传送参数scala>def add(a,b)=a+bscala>val f =…
补充知识:http://www.importnew.com/4543.html 正文开始 scala.collection.immutable scala.collection.mutable 队列Queue val emp = scala.collection.immutable.Queue[Int](); val has1 = emp.enqueue(1) val has123=has1.enqueue(List(2,3)) println(has1) //Queue(1) println(…
数组 ----------------------------------- 0.若长度固定则用Array,若长度可能变化则使用ArrayBuffer 1.提供初始值的时候不要使用new. 2.用()来访问元素 3.使用for(elem<-arr)来遍历元素 4.用for(elem<- arr if ....)...yield...来将原数组转换成新数组 5.Scala数组和java数组可以互操作:用ArrayBuffer,使用scala.collection.JavaConversions中…
package yjmyzz import java.io.PrintWriter import java.util.Date import scala.io.Source object ScalaApp02 { def main(args: Array[String]) { tupleDemo println mapDemo println arrayDemo println fileWriteAndRead println(getUrlContent("http://www.cnblogs.…
1.Tuple:元祖.是一个有用的容器对象. 1)特点:  ① 元祖是不可变的,即,当声明完了一个元祖,那么它的长度就不可以在改变:  ② 元祖可以包含不同类型的数据,对象:   ③ 索引是从 '_1' 开始,读取元祖中的内容 ④标识:' () ' 2)代码 //元祖 def doTuple() { //'()' 定义元祖 val pair = (100, "scala", "spark") //元祖的类型val pair: (Int, String, String…
例子 val v = Vector(,,,) ) println(s) //输出:Vector(2, 4, 6, 8) val v2 = Vector(,,,) var v3 = v2.reduce((sum,n) => sum + n) println(v3) //输出:1111 val vv = Vector(,,,) vv.foreach( n => sum += n) println(sum) //输出:2222…
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 3 1.5 Windows下搭建Scala开发环境 4 1.6 Linux下搭建Scala开发环境 5 1.7 Scala开发工具的介绍 8 1.7.1 idea工具的介绍 8 1.7.2 Scala插件安装 8 1.8 scala的开发的快速入门 10 1.8.1 IDE工具Idea 来开发 “…
Tuple是一个元组: 1,)一组元组中支持多个元素: 2,)一组元组中可以包含不同类型的元素: 3,)返回下标从_1开始. Array 数组 var items=Array(1,2,3,4) Map key,value的方式 val ages=Map("hadoop"->9,"Spark"->5) 文件的操作方法 Source.fromFile("c:\test.txt") package com.dtgroup.study imp…
.类型参数化数组 val arrayString = Array[String](2); arrayString (0)="Hello"; arrayString (1)="World"; for (i <- 0 to 1){ print(arrayString (i)) } 需要留意上面代码的几个地方如下: 1.无论是在创建数组时的维度指定,还是对数组元素的访问都是使用括号,这里本质上是调用了Array类对应的方法返回的结果完成的操作: 2.scala基本原…
感谢博主lyrebing  博文地址:http://blog.csdn.net/lyrebing/article/details/20446061 1.  Actor用法 1.1 Actor的基本使用 Scala会建立一个线程池共所有Actor来使用. receive模型是Actor从池中取一个线程一直使用: react模型是Actor从池中取一个线程用完给其他Actor用 例1-1 基本运行方式1 //actor是一个类似线程的实体,它有一个用来接收消息的信箱. //实现actor的方法是继承…
scala 版HelloWorrld object HelloWorld{ def main(args:Array[String]){ println("Hello World!!!"); } } 1.使用scalac HelloWorld.scala 编译下: 2.运行scala程序:scala HelloWorld scala 无基本类型和包装类型之分 scala 方法: block内最后一行为返回值 没有返回值的方法写法: scala> def sayHello(name:…
1.Option类型 Option类型可以有两种类型,一种是Some(x),一种是None对象 比如Scala的Map的get方法发现了指定键,返回Some(x),没有发现,返回None对象 2.列表 List类型中的所有元素都具有相同的类型. 空列表的类型为List[Nothing].对于任意类型T的List[T],List[Nothing]都是其子类. val list = List[String]("1","2","3") val list…
1.样本类 在申明的类前面加上一个case修饰符,带有这种修饰符的类被称为样本类(case class). 被申明为样本类的类的特点:1.会添加和类名一致的工厂方法:2.样本类参数列表中的所有参数隐式获得了val前缀,因此它被当做字段维护:3.编译器被这个样本类添加了toString.hashcode.equals方法的实现:4.支持了模式匹配 2.模式匹配 一个模式匹配包含了一系列备选项,每个都开始于关键字case.每个备选项都包含了一个模式及一到多个表达式,它们将在模式匹配过程中被计算. 其…
变量定义 Scala有两种变量,val和var.val类似于Java中的final变量,一旦初始化了,val就不能再被赋值.var可以多次赋值.但由于函数式编程特性,Scala更推崇val. var的使用也有其局限性,Scala有类型推断的功能,当var被初始化后,其类型就已经被断定,比如 当m被赋值hello后,其被推断为String类型,此时再对m重新赋值,如果不是String类型则会报错: 函数定义 函数定义用def,如: 其中Unit类似于Java中的void. 以上是无参无返回值的最简…
0.在 scala> 下运行Scala程序 首先cd到.scala文件所在的目录下 scalac这个scala文件,然后import package的名字.object的名字 然后就能使用 object的名字.def的名字来运行这个def 1.表达式 scala> 1 + 2 res0: Int = 3 2.变量定义,Scala中有两种变量,一种是var,一种val,val类似于Java里面的final变量,一旦初始化了,val就不能再次被赋值了 scala> var str = &qu…
有了可运行的环境,就需要写一些简单的语句来认识一下Scala,本文没有写那么详细,只是为了方便查看.唤起回忆 (1)变量的定义方法 Scala有两种变量 var val 注意:在解释器中,可以用一个之前已经使用了的名字定义新的val (2)函数结构 def max(X:Int,Y:Int):Int={ if(X>Y) X else Y } 既不带参数也不返回有用结果的函数定义: def greet()=println("Hello, World !") def printArgs…
1.构造映射 //构造这样的一个映射 val sources=Map(,,) //构造了一个不可变的Map[String,Int],值不能改变, //可变映射 val scores = new scala.collection.mutable.HashMap[String,Int] //映射是对偶的集合.简单来说就是两个值构成的组,这两个值不一定适合同一类型的,如("Alice",10).->操作符用来创建对偶: 改代码产出的值是:() 2.获取映射中的值:在scala中,函数和…
1.包 --------------------------------------- Scala中的包和Java或者C++中命名空间的目的是相同的:管理大型程序中的名称. package a{ package aa{ psckage aaa{ object A{ def main(args:Array[String]):Util={ print("hello") } } } } } //包对象,编译完成之后生成以xxx为package,下面含有类package.class+packa…
在scala中一切皆对象,一切皆函数,函数跟Int,String.Class等其它类型是处于同等的地位,换句话说,使用函数跟使用普通的类型一样,没什么区别,因此: 1.函数可以赋值给变量,可以当参数传递 def helloWorld(msg: String): Unit = { println("Hello," + msg) } def foo = { println("foo") } def main(args: Array[String]) { //函数赋值给变…