spark:学习杂记+快速排序--26
2015-04-17 23:36
405 查看
数组:Array,列表:List,集:Set,映射:Map
1.列表缓存:ListBuffer,数组缓存:ArrayBuffer
2.队列:Queue···先进先出
分可变与不可变,入栈Push,出栈Pop,top:只获取栈顶元素而不移除
5.Set,Map
默认情况下使用“Set”或“Map”时,获得的是不可变对象,可变版本需要先写明引用
集的关键特性在于它可以使用对象的 == 操作检查
6.集的操作P222,映射的操作P223
7.数组与列表之间的互换
queues:函数式队列
head:返回队列的第一个元素
tail:返回除第一个元素之外的队列
append:返回尾部添加了指定元素的新队列
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ScalaByExample书上的列子
1.列表缓存:ListBuffer,数组缓存:ArrayBuffer
2.队列:Queue···先进先出
import scala.collection.immutable.Queue val empty = new Queue[Int] val has1 = empty.enqueue(1) //为不可变队列添加元素Queue(1) val has123 = has1.enqueue(List(2, 3)) //Queue(1, 2, 3) val (element, has23) = has123.dequeue//队列头部移除元素Queue(2, 3)//
import scala.collection.immutable.Queue //可变队列与不可变队列类似 val queue = new Queue[String] queue += "a" queue ++= List("b", "c") //Queue(a, b, c)3.栈:Stack···后进先出
分可变与不可变,入栈Push,出栈Pop,top:只获取栈顶元素而不移除
import scala.collection.mutable.Stack val stack = new Stack[Int] stack.push(1) //Stack(1) stack.push(2) //Stack(1, 2) stack.top //Int = 2, Stack(1, 2) stack.pop //Int = 2, Stack(1)4.字符串:经RichString隐式转换
5.Set,Map
默认情况下使用“Set”或“Map”时,获得的是不可变对象,可变版本需要先写明引用
集的关键特性在于它可以使用对象的 == 操作检查
scala> val text = "See Spot run.Run, Stop.Run!" scala> val WordsArray = text.split("[ !,.]+")//有空格 Array(See,Spot,run,Run,Stop,Run)正则表达式“[” !,.]+"表明字符串应该在每个存在一到多个空格和/或标点符号的地方分割开来
6.集的操作P222,映射的操作P223
7.数组与列表之间的互换
scala> treeSet.toList //List(blue,green,red,yellow) scala> treeSet.toArray //Array(blue,green,red,yellow)8.类型参数化:
queues:函数式队列
head:返回队列的第一个元素
tail:返回除第一个元素之外的队列
append:返回尾部添加了指定元素的新队列
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package ll /** * Created by sendoh on 2015/4/17. */ class sendoha1 { //快速排序 def sort(xs: Array[Int]): Unit ={ def swap(i: Int, j: Int): Unit ={ val t = xs(i); xs(i) = xs(j); xs(j) = t } def sort1(l: Int, r: Int): Unit ={ val pivot = xs((l + r) / 2) val i = l; var j = r while (i <= j){ while (xs(i) < pivot) i += l while (xs(j) > pivot) j -= l if (i <= j){ swap(i, j) i += l j -= l } } if (l < j) sort1(l, j) if (j < r) sort1(i, r) } sort1(0, xs.length - 1) } }//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package ll /** * Created by sendoh on 2015/4/17. */ class sendoha2 { //快速排序2 def sort(xs: Array[Int]): Unit ={ if (xs.length <= 1) xs else{ val pivot = xs(xs.length / 2) Array.concat( sort(xs filter(pivot >)), xs filter(pivot ==), sort(xs filter(pivot <)) ) } } }///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ScalaByExample书上的列子
package ll import java.util.Date import org.omg.CORBA.TIMEOUT import scala.actors.Actor /** * Created by sendoh on 2015/4/16. */ class sendoha3{} abstract class AuctionMessage case class Offer(bid: Int, client: Actor) extends AuctionMessage case class Inquire(client: Actor) extends AuctionMessage abstract class AuctionReply case class Status(asked: Int, expire: Date) extends AuctionReply case object BestOffer extends AuctionReply case class BeatenOffer(maxBid: Int) extends AuctionReply case class AuctionConcluded(seller: Actor, client: Actor) extends AuctionReply case object AuctionFailed extends AuctionReply case object AuctionOver extends AuctionReply class Auction(seller: Actor, minBid: Int, closing: Date) extends Actor { val timeToShutdown = 36000000 //msec val bidIncrement = 10 def act(): Unit ={ var maxBid = minBid - bidIncrement var maxBidder: Actor = null var running = true while (running){ receiveWithin((closing.getTime() - new Date().getTime())) { case Offer(bid, client) => if (bid >= maxBid + bidIncrement){ if (maxBid >= minBid) maxBidder ! BeatenOffer(bid) maxBid = bid; maxBidder = client; client ! BestOffer } else { client ! BeatenOffer(maxBid) } case Inquire(client) => client ! Status(maxBid, closing) case TIMEOUT => if (maxBid >= minBid){ val reply = AuctionConcluded(seller, maxBidder) maxBidder ! reply; seller ! reply } else { seller ! AuctionFailed } receiveWithin(timeToShutdown){ case Offer(_, client) => client ! AuctionOver case TIMEOUT => running = false } } } } }
相关文章推荐
- 归并排序学习总结,递归法&&插入排序&&冒泡排序&&选择排序&&快速排序
- 学习笔记之快速排序
- 算法学习之排序(5)--快速排序
- 快速排序学习笔记
- 算法学习 - 快速排序相关
- spark学习02之app流量统计并排序(JAVA)
- 算法导论 第7章 快速排序 学习总结
- 快速排序学习
- 数据结构&算法学习笔记: 快速排序
- spark学习七 共享内存的实现(快速的共享数据)
- spark:学习杂记--23
- 菜鸟学习历程【15-3】快速排序
- 快速排序学习笔记
- 快速排序学习笔记
- 算法学习-1 快速排序
- spark:学习杂记+仿写案例--35
- Spark学习笔记(26)在DStream的Action操作之外也可能产生Job操作
- 学习python 快速排序
- 排序--快速排序学习
- spark:学习杂记--38