1.使用队列

队列是一种那个先进先出的队列。
1)创建一个队列。

scala> import scala.collection.mutable.Queue
import scala.collection.mutable.Queue scala> var fruits = Queue[String]()
fruits: scala.collection.mutable.Queue[String] = Queue() scala> fruits += "apple"
res66: scala.collection.mutable.Queue[String] = Queue(apple) scala> fruits += ("orange","banana")
res67: scala.collection.mutable.Queue[String] = Queue(apple, orange, banana) scala> fruits ++= List("cherry","cocount")
res68: scala.collection.mutable.Queue[String] = Queue(apple, orange, banana, cherry, cocount) scala> fruits.enqueue("pine") scala> fruits
res70: scala.collection.mutable.Queue[String] = Queue(apple, orange, banana, cherry, cocount, pine)

2)dequeue每次从队列头部删除一个元素。

scala> val next = fruits.dequeue
next: String = apple scala> fruits
res72: scala.collection.mutable.Queue[String] = Queue(orange, banana, cherry, cocount, pine)

3)dequeueFirst和dequeueAll方法可以从队列中删除多个元素。

scala> var fruits = Queue[String]()
fruits: scala.collection.mutable.Queue[String] = Queue() scala> fruits ++= List("cherry","cocount")
res76: scala.collection.mutable.Queue[String] = Queue(cherry, cocount) scala> fruits ++= List("orange","apple")
res77: scala.collection.mutable.Queue[String] = Queue(cherry, cocount, orange, apple) scala> fruits.dequeueFirst(_.startsWith("a"))
res79: Option[String] = Some(apple) scala> fruits
res80: scala.collection.mutable.Queue[String] = Queue(cherry, cocount, orange) scala> fruits.dequeueAll(_.length > 6)
res81: scala.collection.mutable.Seq[String] = ArrayBuffer(cocount) scala> fruits
res82: scala.collection.mutable.Queue[String] = Queue(cherry, orange)

2.使用栈

栈是一种后进先出的数据结构。用push方法将元素入栈,用pop方法将元素出栈。
1)创建一个任意数据类型空的可变栈。

scala> import scala.collection.mutable.Stack
import scala.collection.mutable.Stack scala> var ints = Stack[Int]()
ints: scala.collection.mutable.Stack[Int] = Stack()

2)在创建时给栈初始元素。

scala> val ints = Stack(1,2,3)
ints: scala.collection.mutable.Stack[Int] = Stack(1, 2, 3)

3)用push方法向栈中填充元素。

scala> var fruits = Stack[String]()
fruits: scala.collection.mutable.Stack[String] = Stack() scala> fruits.push("apple")
res2: scala.collection.mutable.Stack[String] = Stack(apple) scala> fruits.push("apple","orange","banana")
res3: scala.collection.mutable.Stack[String] = Stack(banana, orange, apple, appl

4)用pop方法将元素出栈。

scala> val next = fruits.pop
next: String = banana scala> fruits
res4: scala.collection.mutable.Stack[String] = Stack(orange, apple, apple)

5)用top方法查看下一个元素。

scala> fruits.top
res5: String = orange scala> fruits
res6: scala.collection.mutable.Stack[String] = Stack(orange, apple, apple)

6)用clear清空一个可变栈。

scala> fruits.clear

scala> fruits
res8: scala.collection.mutable.Stack[String] = Stack()

  

scala的多种集合的使用(8)之队列和栈的操作方法的更多相关文章

  1. scala的多种集合的使用(1)之集合层级结构与分类

    一.在使用scala集合时有几个概念必须知道: 1.谓词是什么? 谓词就是一个方法,一个函数或者一个匿名函数,接受一个或多个函数,返回一个Boolean值. 例如:下面方法返回true或者false, ...

  2. scala的多种集合的使用(6)之映射Map的操作方法

    1.创建映射 1)创建不可变的映射 scala> val status = Map(1 -> "a",2 -> "b") status: sc ...

  3. scala的多种集合的使用(5)之数组Array(ArrayBuffer)的操作

    1.创建和更新数组的不同方式 1)定义一个数组的初始大小和类型,随后填充值. scala> val array = new Array[String](3) array: Array[Strin ...

  4. scala的多种集合的使用(4)之列表List(ListBuffer)的操作

    1.List列表的创建和添加元素 1)最常见的创建list的方式之一. scala> val list = 1 :: 2 :: 3 :: Nil list: List[Int] = List(1 ...

  5. scala的多种集合的使用(3)之遍历集合的方法

    遍历集合的方法 1.用foreach循环遍历一个集合 foreach接收一个函数作为参数.定义的函数应该接收一个元素作为输入参数,然后不要返回任何的东西.输入的参数的类型应该匹配集合中的类型.随着fo ...

  6. scala的多种集合的使用(2)之集合常用方法

    一.常用的集合方法 1.可遍历集合的常用方法 下表列出了Traverable在所有集合常用的方法.接下来的符号: c代表一个集合 f代表一个函数 p代表一个谓词 n代表一个数字 op代表一个简单的操作 ...

  7. scala的多种集合的使用(7)之集Set的操作方法

    1.给集添加元素 1)用+=.++=和add给可变集添加元素. scala> var set = scala.collection.mutable.Set[Int]() set: scala.c ...

  8. Programming In Scala笔记-第十七章、Scala中的集合类型

    本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...

  9. 9、scala函数式编程-集合操作

    一.集合操作1 1.Scala的集合体系结构 // Scala中的集合体系主要包括:Iterable.Seq.Set.Map.其中Iterable是所有集合trait的根trai.这个结构与Java的 ...

随机推荐

  1. javascript权威指南笔记[1-5]

    1.javaScript的数据类型分为两类:原始类型和对象类型: 2.javaScript中除了数字,字符串,布尔值,null,undefined之外就是对象了: 3.对象(object)是属性(pr ...

  2. 万能的Python,还能用来制作高大上的进度条?

    对于开发或者运维来说,使用Python去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效的监控任务的进度,除了在任务中加上log外,还能不能有另一种方式来了解任务进展到哪一步了呢? ...

  3. cAdvisor+Prometheus+Grafana监控docker

    cAdvisor+Prometheus+Grafana监控docker 一.cAdvisor(需要监控的主机都要安装) 官方地址:https://github.com/google/cadvisor ...

  4. qml demo分析(abstractitemmodel-数据分离)

    一.概述 qt5之后qml也可以被用于桌面程序开发,今天我就拿出qt demo中的一个qml示例程序进行分析.这个demo主要是展示了qml数据和展示分离的使用方式,qml只专注于快速高效的绘制界面, ...

  5. PopupMenuDemo【popupMenu的简单使用】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本文主要将PopUpMenu和ToolbarDemo[Toolbar作为顶部导航栏的简单使用]进行搭配使用,实现toolbar的溢出 ...

  6. Java~时间戳小知识

    大叔对java时间戳使用的总结 Java里的Date对象有方法setTime,主要是将一个时间戳转成一个日期对象,而这个时间戳的标准是unix标准,即当前时间与1970/1/1相差的毫秒数,记得是毫秒 ...

  7. java~lambda表达式让查询更优雅

    在java之前的版本里,如果希望从集合时查找符合条件的数据,如果先遍历他,这种写法是我们不能接受的,所以现在java有了lambda就很好的解决了这个问题,让代码更优雅一些! /** * lambda ...

  8. springboot~mogodb多条件拼接

    起因 当前我们使用mongodb进行查询时,有时我们的条件是分块生成的,它可能来自一个列表里,我们的条件需要根据列表去返回数据,这里有个问题,如果遍历列表,然后每次都去从mongodb里查询数据 ,这 ...

  9. Selenium的发展历史及原理

    目录 1. selenium1.0的产生 2. webdriver的产生 3. selenium和webdriver的合并 4. selenium3.0的产生 1. selenium1.0的产生 为什 ...

  10. 为何IntelliJ IDEA比Eclipse更好

    阅读本文大概需要 4.2 分钟. 本文为译文,翻译:彭博 https://www.oschina.net/news/26929 争论 有一些没有唯一正确答案的“永恒”的问题,例如,更好的是:Windo ...