scala的多种集合的使用(8)之队列和栈的操作方法
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)之队列和栈的操作方法的更多相关文章
- scala的多种集合的使用(1)之集合层级结构与分类
一.在使用scala集合时有几个概念必须知道: 1.谓词是什么? 谓词就是一个方法,一个函数或者一个匿名函数,接受一个或多个函数,返回一个Boolean值. 例如:下面方法返回true或者false, ...
- scala的多种集合的使用(6)之映射Map的操作方法
1.创建映射 1)创建不可变的映射 scala> val status = Map(1 -> "a",2 -> "b") status: sc ...
- scala的多种集合的使用(5)之数组Array(ArrayBuffer)的操作
1.创建和更新数组的不同方式 1)定义一个数组的初始大小和类型,随后填充值. scala> val array = new Array[String](3) array: Array[Strin ...
- scala的多种集合的使用(4)之列表List(ListBuffer)的操作
1.List列表的创建和添加元素 1)最常见的创建list的方式之一. scala> val list = 1 :: 2 :: 3 :: Nil list: List[Int] = List(1 ...
- scala的多种集合的使用(3)之遍历集合的方法
遍历集合的方法 1.用foreach循环遍历一个集合 foreach接收一个函数作为参数.定义的函数应该接收一个元素作为输入参数,然后不要返回任何的东西.输入的参数的类型应该匹配集合中的类型.随着fo ...
- scala的多种集合的使用(2)之集合常用方法
一.常用的集合方法 1.可遍历集合的常用方法 下表列出了Traverable在所有集合常用的方法.接下来的符号: c代表一个集合 f代表一个函数 p代表一个谓词 n代表一个数字 op代表一个简单的操作 ...
- scala的多种集合的使用(7)之集Set的操作方法
1.给集添加元素 1)用+=.++=和add给可变集添加元素. scala> var set = scala.collection.mutable.Set[Int]() set: scala.c ...
- Programming In Scala笔记-第十七章、Scala中的集合类型
本章主要介绍Scala中的集合类型,主要包括:Array, ListBuffer, Arraybuffer, Set, Map和Tuple. 一.序列 序列类型的对象中包含多个按顺序排列好的元素,可以 ...
- 9、scala函数式编程-集合操作
一.集合操作1 1.Scala的集合体系结构 // Scala中的集合体系主要包括:Iterable.Seq.Set.Map.其中Iterable是所有集合trait的根trai.这个结构与Java的 ...
随机推荐
- Python3+Flask+uwsgi部署
python3 按照常规的方式安装即可: wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tgz tar zxvf Python-3 ...
- Linux学习笔记--vi
在Linux上使用vi命令修改一个文件内容的时候,发现无法保存,每次写完使用“:q!”命令可以正常退出但是使用":wq!"命令保存文件并退出时出现一下信息提示: E212: Can ...
- 6.Flask-WTForms
Flask-WTF是简化了WTForms操作的一个第三方库.WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板.还有其它一些功能:CSRF保护, 文件上传等.安装方法:pip in ...
- 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来. 3.1 概述 说起垃圾收集(Garbage Collection,GC),大部分人都把这 ...
- DotNetCore跨平台~EFCore数据上下文的创建方式
回到目录 对于DotNetCore来说,把大部分组件者放在DI容器里,在startup中进行注入,在类的构造方法中进行使用,如果某些情况下,无法使用这种DI的方式,也可以自己控制数据上下文的生产过程, ...
- 开辟sys节点用户层直接操作物理地址(比/dev/mem方便)
在调试驱动程序时, 经常要设置主控器寄存器参数或者运行时读取寄存器值debug问题, 每次修改驱动读取寄存器值都要编译一次驱动再insmod, 十分不方便, 哪怕驱动提供一个节点 如dev/mem给应 ...
- Asp.Net.Identity认证不依赖Entity Framework实现方式
Asp.Net.Identity为何物请自行搜索,也可转向此文章http://www.cnblogs.com/shanyou/p/3918178.html 本来微软已经帮我们将授权.认证以及数据库存储 ...
- .NetCore WebAPI采坑之路(持续更新)
1.WebAPI新增日志过滤器or中间件后Action读取到的请求Body为空问题 案例: 自定义了一个中间件,用于记录每次访问webapi的入参,以及引用了Swagger. 先看下面这段代码: pu ...
- 基于python的种子搜索网站-项目部署
本讲会对种子搜索网站的部署过程进行详细的讲解. 网站演示: https://bt.mypython.me 源码地址: https://github.com/geeeeeeeek/bt 项目部署过程 系 ...
- iOS----------适配iOS12
library not found for -lstdc++.6.0.9 原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是libstd ...