一、Queue队列是FIFO(先进先出),Queue分可变和不可变(immutable queue and mutable queue)
import scala.collection.mutable.Queue var ints = Queue[Int]() var fruits = Queue[String]() var q = Queue[Person]() scala> val q = Queue(1, 2, 3) q: scala.collection.mutable.Queue[Int] = Queue(1, 2, 3)
使用+=、++=、enqueue来添加元素
scala> import scala.collection.mutable.Queue import scala.collection.mutable.Queue // create an empty queue scala> var q = new Queue[String] q: scala.collection.mutable.Queue[String] = Queue() // add elements to the queue in the usual ways scala> var q = new Queue[String] q: scala.collection.mutable.Queue[String] = Queue() scala> q += "apple" res0: scala.collection.mutable.Queue[String] = Queue(apple) scala> q += ("kiwi", "banana") res1: scala.collection.mutable.Queue[String] = Queue(apple, kiwi, banana) scala> q ++= List("cherry", "coconut") res2: scala.collection.mutable.Queue[String] = Queue(apple, kiwi, banana, cherry, coconut) // can also use enqueue scala> q.enqueue("pineapple") scala> q res3: scala.collection.mutable.Queue[String] = Queue(apple, kiwi, banana, cherry, coconut, pineapple)
使用dequeue来取出数据,因为是FIFO所以取出的数据是从队列的头部开始, dequeueFirst, dequeueAll可以根据条件取出数据
// take an element from the head of the queue scala> val next = q.dequeue next: String = apple // 'apple' is removed from the queue scala> q res0: scala.collection.mutable.Queue[String] = Queue(kiwi, banana, cherry, coconut, pineapple) // take the next element scala> val next = q.dequeue next: String = kiwi // 'kiwi' is removed from the queue scala> q res1: scala.collection.mutable.Queue[String] = Queue(banana, cherry, coconut, pineapple)
scala> q.dequeueFirst(_.startsWith("b")) res2: Option[String] = Some(banana) scala> q res3: scala.collection.mutable.Queue[String] = Queue(cherry, coconut, pineapple) scala> q.dequeueAll(_.length > 6) res4: scala.collection.mutable.Seq[String] = ArrayBuffer(coconut, pineapple) 11.29. Using a Queue | 373 scala> q res5: scala.collection.mutable.Queue[String] = Queue(cherry)
二、stack 栈LIFO(后进先出),这个和大多数语言一样添加数据用push、取出数据pop,stack 也分可变和不可变(immutable stack and mutable stack )
import scala.collection.mutable.Stack var ints = Stack[Int]() var fruits = Stack[String]() case class Person(var name: String) var people = Stack[Person]() val ints = Stack(1, 2, 3)
// create a stack scala> var fruits = Stack[String]() fruits: scala.collection.mutable.Stack[String] = Stack() // add one element at a time scala> fruits.push("apple") res0: scala.collection.mutable.Stack[String] = Stack(apple) scala> fruits.push("banana") res1: scala.collection.mutable.Stack[String] = Stack(banana, apple) // add multiple elements scala> fruits.push("coconut", "orange", "pineapple") res2: scala.collection.mutable.Stack[String] = Stack(pineapple, orange, coconut, banana, apple)
scala> val next = fruits.pop next: String = pineapple scala> fruits res3: scala.collection.mutable.Stack[String] = Stack(orange, coconut, banana, apple)
因为pop取数据会删除掉stack中的数据,所以我们可以使用top来获取数据
scala> fruits.top res4: String = orange // 'orange' is still on the top scala> fruits res5: scala.collection.mutable.Stack[String] = Stack(orange, coconut, banana, apple)
因为stack继承Seq,所以可以使用其中的方法
scala> fruits.size res6: Int = 4 scala> fruits.isEmpty res7: Boolean = false //清空栈数据 scala> fruits.clear scala> fruits res8: scala.collection.mutable.Stack[String] = Stack()
相关推荐
Scala学习笔记,大全笔记
### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...
在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
本书介绍Scala基本语法、构造。以及如何将您已经知道的复制java语法转换为Scala,了解Scala除了javabecome之外还提供了哪些功能编程概念和惯用技巧和建议,这些技巧和建议在将现有java项目转换为Scala时非常有用
《在Scala中进行编程:全面的分步指南》(Programming in Scala: A comprehensive step-by-step guide)是一本关于Scala编程语言的权威教材。这本书的独特之处在于它的共同作者是Scala语言的设计师Martin Odersky,...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4讲-Scala编程详解:条件控制与循环 共7页第5讲-Scala编程详解:函数入门 共5页第6讲-Scala编程...
### Scala学习笔记关键知识点 #### 1. “均码”哲学与并发编程 - **“均码”哲学**: 指的是Scala设计时遵循的一种设计理念,即尽量保持语言的统一性和简洁性,使得不同的功能和特性能够以一种相似的方式进行处理。...
Learn Scala is split into four parts: a tour of Scala, a comparison between Java and Scala, Scala-specific features and functional programming idioms, and finally a discussion about adopting Scala in...
[Scala学习笔记-中文资料] 从java角度看Scala