Set、Map、Tuple、队列操作实战

本节主要内容

  1. mutable、immutable集合
  2. Set操作实战
  3. Map操作实战
  4. Tuple操作实战
  5. 队列操作实战
  6. 栈操作实战

mutable、immutable集合

以下内容来源于Scala官方文档: 
http://www.scala-lang.org/docu/files/collections-api/collections.html

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;">Scala collections systematically distinguish between mutable <span class="hljs-operator" style="box-sizing: border-box;">and</span> immutable collections. A mutable collection can be updated <span class="hljs-operator" style="box-sizing: border-box;">or</span> extended <span class="hljs-operator" style="box-sizing: border-box;">in</span> place. 
This means you can change, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">add</span>, <span class="hljs-operator" style="box-sizing: border-box;">or</span> remove elements <span class="hljs-operator" style="box-sizing: border-box;">of</span> <span class="hljs-operator" style="box-sizing: border-box;">a</span> collection <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span> <span class="hljs-operator" style="box-sizing: border-box;">a</span> side effect. Immutable collections, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">by</span> contrast, never change. You have still operations that simulate additions, removals, <span class="hljs-operator" style="box-sizing: border-box;">or</span> updates, 
but those operations will <span class="hljs-operator" style="box-sizing: border-box;">in</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">each</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-constant" style="box-sizing: border-box;">return</span> <span class="hljs-operator" style="box-sizing: border-box;">a</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">new</span> collection <span class="hljs-operator" style="box-sizing: border-box;">and</span> leave <span class="hljs-operator" style="box-sizing: border-box;">the</span> old collection unchanged.<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">
//大致意思是:scala中的集合分为两种,一种是可变的集合,另一种是不可变的集合</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">
//可变的集合可以更新或修改,添加、删除、修改元素将作用于原集合</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">
//不可变集合一量被创建,便不能被改变,添加、删除、更新操作返回的是新的集合,老集合保持不变</span></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li></ul>

scala中所有的集合都来自于scala.collection包及其子包mutable, immutable当中

<code class="hljs fsharp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//scala.collection.immutable包中的集合绝对是不可变的,函数式编程语言推崇使用immutable集合</span>
A collection <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> package scala.collection.immutable is guaranteed <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> be immutable <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> everyone. Such a collection will never change after it is created.
Therefore, you can rely on the fact that accessing the same collection value repeatedly at different points <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> time will always <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">yield</span> a collection <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> the same elements.
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//scala.collection.immutable包中的集合在是可变的,使用的时候必须明白集合何时发生变化</span>
A collection <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> package scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span> is known <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> have some operations that change the collection <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> place. 
So dealing <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">with</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span> collection means you need <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> understand which code changes which collection <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">when</span>.

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//scala.collection中的集合要么是mutalbe的,要么是immutable的</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//同时该包中也定义了immutable及mutable集合的接口</span>
A collection <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> package scala.collection can be either <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> immutable. For instance,
collection.IndexedSeq[T] is a superclass <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> both collection.immutable.IndexedSeq[T] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.IndexedSeq[T] Generally, 
the root collections <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> package scala.collection define the same <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">interface</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span> the immutable collections, 
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">and</span> the <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span> collections <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> package scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span> typically add some side-effecting modification operations <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">to</span> this immutable <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">interface</span>.</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li></ul>

在scala中,默认使用的都是immutable集合,如果要使用mutable集合,需要在程序中引入

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;">import scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span>
//由于immutable是默认导入的,因此要使用mutable中的集合的话
//使用如下语句
scala> val mutableSet=mutable<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)
<span class="hljs-label" style="box-sizing: border-box;">mutableSet:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Set</span>[Int] = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)
//不指定的话,创建的是immutable 集合
scala> val mutableSet=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)
<span class="hljs-label" style="box-sizing: border-box;">mutableSet:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.immutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Set</span>[Int] = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li></ul>

直接使用Set(1,2,3)创建的是immutable集合,这是因为当你不引入任何包的时候,scala会默认导入以几个包: 
这里写图片描述

Predef对象中包含了Set、Map等的定义 
这里写图片描述

scala集合类的层次结构:

scala.collection包中的集合类层次结构如下图: 
这里写图片描述 
These are all high-level abstract classes or traits, which generally have mutable as well as immutable implementations.

scala.collection.immutable包中的类层次结构: 
这里写图片描述

scala.collection.mutable包中的类层次结构:

这里写图片描述

可变集合与不可变集合对应关系: 
这里写图片描述

Set操作实战

1 Set(集)是一种不存在重复元素的集合,它与数学上定义的集合是对应的

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;">//定义一个集合
//这里使用的是mutable
scala> val numsSet=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>)
<span class="hljs-label" style="box-sizing: border-box;">numsSet:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Set</span>[Double] = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span>)

//向集中添加一个元素,同前一讲中的列表和数组不一样的是
//,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>在插入元素时并不保元素的顺序
//默认情况下,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>的实现方式是HashSet实现方式,
//集中的元素通过HashCode值进行组织
scala> numsSet+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>
<span class="hljs-label" style="box-sizing: border-box;">res20:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Set</span>[Double] = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6.0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span>)

//遍历集
scala> for ( i <- res20 ) println(i)
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6.0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span>

//如果对插入的顺序有着严格的要求,则采用scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutalbe</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LinkedHashSet</span>来实现
scala> val linkedHashSet=scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LinkedHashSet</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>)
<span class="hljs-label" style="box-sizing: border-box;">linkedHashSet:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LinkedHashSet</span>[Double] = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.0</span>)

scala> linkedHashSet+<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>
<span class="hljs-label" style="box-sizing: border-box;">res26:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.LinkedHashSet</span>[Double] = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Set</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.0</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6.0</span>)</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li></ul>

Map操作实战

Map是一种键值对的集合,一般将其翻译为映射

<code class="hljs fsharp has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//直接初始化</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// ->操作符,左边是key,右边是value</span>
scala> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">val</span> studentInfo=Map(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"john"</span> -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"stephen"</span> -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"lucy"</span> -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>)
studentInfo: scala.collection.immutable.Map[String,Int] = Map(john -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span>, stephe
n -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>, lucy -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//immutable不可变,它不具有以下操作</span>
scala> studentInfo.clear()
<console>:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">10</span>: error: value clear is not a <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">member</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">of</span> scala.collection.immutable.M
ap[String,Int]
              studentInfo.clear()
                          ^
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//创建可变的Map</span>
scala> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">val</span> studentInfoMutable=scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.Map(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"john"</span> -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"stephe
n"</span> -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"lucy"</span> -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>)
studentInfoMutable: scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.Map[String,Int] = Map(john -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span>, l
ucy -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>, stephen -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>)
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//mutable Map可变,比如可以将其内容清空</span>
scala> studentInfoMutable.clear()

scala> studentInfoMutable
res3: scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.Map[String,Int] = Map()

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//遍历操作1</span>
scala> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span>( i <- studentInfoMutable ) println(i)
(john,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span>)
(lucy,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>)
(stephen,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//遍历操作2</span>
scala> studentInfoMutable.foreach(e=>
{<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">val</span> (k,v)=e; println(k+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">":"</span>+v)}
)
john:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span>
lucy:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>
stephen:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//遍历操作3</span>
scala> studentInfoMutable.foreach(e=> println(e._1+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">":"</span>+e._2))
john:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">21</span>
lucy:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span>
stephen:<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">22</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//定义一个空的Map</span>
scala> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">val</span> xMap=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.HashMap[String,Int]()
xMap: scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.HashMap[String,Int] = Map()

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//往里面填充值</span>
scala> xMap.put(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"spark"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
res12: Option[Int] = None

scala> xMap
res13: scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.HashMap[String,Int] = Map(spark -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//判断是否包含spark字符串</span>
scala> xMap.contains(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"spark"</span>)
res14: Boolean = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//-> 初始化Map,也可以通过 ("spark",1)这种方式实现(元组的形式)</span>
scala> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">val</span> xMap=scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.Map((<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"spark"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>),(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hive"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>))
xMap: scala.collection.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">mutable</span>.Map[String,Int] = Map(spark -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, hive -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)

scala> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"spark"</span> -> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
res18: (String, Int) = (spark,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//获取元素</span>
scala> xMap.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"spark"</span>)
res19: Option[Int] = Some(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)

scala> xMap.get(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"SparkSQL"</span>)
res20: Option[Int] = None</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">25</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">26</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">27</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">28</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">29</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">30</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">31</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">32</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">33</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">34</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">35</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">36</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">37</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">38</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">39</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">40</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">41</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">42</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">43</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">44</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">45</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">46</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">47</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">48</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">49</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">50</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">51</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">52</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">53</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">54</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">55</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">56</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">57</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">58</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">59</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">60</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">61</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">62</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">63</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">64</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">65</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">66</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">67</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">68</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">69</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">70</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">25</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">26</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">27</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">28</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">29</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">30</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">31</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">32</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">33</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">34</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">35</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">36</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">37</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">38</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">39</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">40</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">41</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">42</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">43</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">44</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">45</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">46</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">47</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">48</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">49</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">50</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">51</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">52</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">53</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">54</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">55</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">56</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">57</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">58</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">59</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">60</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">61</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">62</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">63</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">64</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">65</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">66</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">67</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">68</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">69</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">70</span></li></ul>

Option,None,Some类型

Option、None、Some是scala中定义的类型,它们在scala语言中十分常用,因此这三个类型非学重要。 
None、Some是Option的子类,它主要解决值为null的问题,在Java语言中,对于定义好的HashMap,如果get方法中传入的键不存在,方法会返回null,在编写代码的时候对于null的这种情况通常需要特殊处理,然而在实际中经常会忘记,因此它很容易引起 NullPointerException异常。在Scala语言中通过Option、None、Some这三个类来避免这样的问题,这样做有几个好处,首先是代码可读性更强,当看到Option时,我们自然而然就知道它的值是可选的,然后变量是Option,比如Option[String]的时候,直接使用String的话,编译直接通不过。

前面我们看到:

<code class="hljs vbscript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;">scala> xMap.<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">get</span>(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"spark"</span>)
res19: <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Option</span>[<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">Int</span>] = Some(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li></ul>

那要怎么才能获取到最终的结果呢,

//通过模式匹配得到最终的结果 
scala> def show(x:Option[Int]) =x match{ 
| case Some(s) => s 
| case None => “????” 
| } 
show: (x: Option[Int])Any

scala> show(xMap.get(“Spark”)) 
res21: Any = 1

scala> show(xMap.get(“sparkSQL”)) 
res22: Any = ????

元组操作实战

前面我们提到Map是键值对的集合,元组则是不同类型值的聚集

<code class="hljs javascript has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//元组的定义</span>
scala> (<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hello"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"china"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"beijing"</span>)
res23: (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span>, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span>, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span>) = (hello,china,beijing)

scala> (<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"hello"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"china"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
res24: (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span>, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span>, Int) = (hello,china,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)

scala> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">var</span> tuple=(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Hello"</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"China"</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
tuple: (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span>, <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span>, Int) = (Hello,China,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//访问元组内容</span>
scala> tuple._1
res25: <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span> = Hello

scala> tuple._2
res26: <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span> = China

scala> tuple._3
res27: Int = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//通过模式匹配获取元组内容</span>
scala> val (first, second, third)=tuple
first: <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span> = Hello
second: <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">String</span> = China
third: Int = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">25</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">26</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">25</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">26</span></li></ul>

队列操作实战

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span style="font-family:Comic Sans MS;">//immutable queue
scala> var queue=scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.immutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)
<span class="hljs-label" style="box-sizing: border-box;">queue:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.immutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>[Int] = Queue(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)

//出队
scala> queue<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.dequeue</span>
<span class="hljs-label" style="box-sizing: border-box;">res38:</span> (Int, scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.immutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>[Int]) = (<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,Queue(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>))

//入队
scala> queue<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.enqueue</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>)
<span class="hljs-label" style="box-sizing: border-box;">res40:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.immutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>[Int] = Queue(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>)

//mutable queue
scala> var queue=scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>)
<span class="hljs-label" style="box-sizing: border-box;">queue:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>[Int] = Queue(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>)

//入队操作
scala> queue += <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>
<span class="hljs-label" style="box-sizing: border-box;">res43:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>[Int] = Queue(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>)

//集合方式
scala> queue ++= List(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>)
<span class="hljs-label" style="box-sizing: border-box;">res45:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Queue</span>[Int] = Queue(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>)
</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">1</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">2</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">3</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">4</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">5</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">6</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">7</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">8</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">9</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">10</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">11</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">12</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">13</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">14</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">15</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">16</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">17</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">18</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">19</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">20</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">21</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">22</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">23</span></li><li style="box-sizing: border-box; padding: 0px 5px;"><span style="font-family:Comic Sans MS;">24</span></li></ul>

栈操作实战

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background-image: initial; background-attachment: initial; background-color: transparent; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"><span style="font-family:Comic Sans MS;">//mutable Stack
scala> import scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Stack</span>
import scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Stack</span>

//new 创建方式
scala> val stack = new Stack[Int]
<span class="hljs-label" style="box-sizing: border-box;">stack:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Stack</span>[Int] = Stack()

//Apply创建方式
scala> val stack1=Stack(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)
<span class="hljs-label" style="box-sizing: border-box;">stack1:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Stack</span>[Int] = Stack(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>)

//出栈
scala> stack1<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.top</span>
<span class="hljs-label" style="box-sizing: border-box;">res55:</span> Int = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>

//入栈
scala> stack<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.push</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
<span class="hljs-label" style="box-sizing: border-box;">res57:</span> stack<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.type</span> = Stack(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
//入栈
scala> stack<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.push</span>(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)
<span class="hljs-label" style="box-sizing: border-box;">res58:</span> stack<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.type</span> = Stack(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
//出栈
scala> stack<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.top</span>
<span class="hljs-label" style="box-sizing: border-box;">res59:</span> Int = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>

scala> stack
<span class="hljs-label" style="box-sizing: border-box;">res60:</span> scala<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.collection</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.mutable</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.Stack</span>[Int] = Stack(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)</span></code>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值