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. 如何机智判断页面是刷新还是关闭,背景:vue项目,需求:关闭页面,下次直接跳到登陆页

    最近项目有这么个需求:要在关闭当前系统的窗口的时候,退出登录, 因为如果不退出登录可能存在安全风险,其实我想说,电脑没事别借给别人活着离开工位记得一定要锁屏,其实我们设置了cookie失效时间的,过了 ...

  2. springboot~Mongodb的集成与使用

    说说springboot与大叔lind.ddd的渊源 Mongodb在Lind.DDD中被二次封装过(大叔的.net和.net core),将它当成是一种仓储来使用,对于开发人员来说只公开curd几个 ...

  3. DI是实现面向切面和面向抽象的前提

    DI越来越重要 DI就是依赖注入,现在来说,大部分框架都是以DI为基础组件的,每一个框架都有自己的DI组件,像dotnet core,java spring等,也都为自己的框架量身打造了DI工具. 面 ...

  4. 行为驱动:Cucumber + Selenium + Java(五) - 使用maven来实现cucumber测试和报告

    在上一篇中,我们介绍了Selenium + Cucumber + Java框架下的测试用例参数化/数据驱动,这一篇我们来使用maven去搭建cucumber框架以及实现测试报告. 5.1 为什么要用m ...

  5. pwnable.tw dubblesort 分析

    本系列为用于记录那些比较有意思的题目. 题目为一个排序算法,就如题目名称那样,dubblesort,32位程序. 利用思路为栈溢出,先是栈溢出泄露出栈上libc的相关数据从而获取libc地址,再是栈溢 ...

  6. word中如何只修改英文的颜色

    替换->更多->使用通配符,查找[a-zA-Z],替换为^&,字体选红色

  7. Keras入门(四)之利用CNN模型轻松破解网站验证码

    项目简介   在之前的文章keras入门(三)搭建CNN模型破解网站验证码中,笔者介绍介绍了如何用Keras来搭建CNN模型来破解网站的验证码,其中验证码含有字母和数字.   让我们一起回顾一下那篇文 ...

  8. C#的dapper使用

    Dapper是一款轻量级ORM工具(Github).如果你在小的项目中,使用Entity Framework.NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀.你又觉得ORM省时省 ...

  9. SAP MM 明明有需求,为啥MRP RUN后没有PR单据产生?

    SAP MM 明明有需求,为啥MRP RUN后没有PR单据产生? 用户报了一个问题说,对于物料号42011222的采购单 4500000156建好了,为啥PR没有自动生成 . 我们检查了物料的MRP ...

  10. RabbitMQ for Mac OS Install

    使用brew来安装 RabbitMQ brew install rabbitmq 执行看到如下命令: Updating Homebrew... ==> Auto-updated Homebrew ...