Set、Map、Tuple、队列操作实战
2016-10-12 18:42
489 查看
本节主要内容
mutable、immutable集合Set操作实战
Map操作实战
Tuple操作实战
队列操作实战
栈操作实战
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>
相关文章推荐
- Scala入门到精通——第四节 Set、Map、Tuple、队列操作实战
- 第四节 Set、Map、Tuple、队列操作实战
- Scala入门到精通——第四节 Set、Map、Tuple、队列操作实战
- Scala入门到精通——第四节 Set、Map、Tuple、队列操作实战
- Scala—— Set、Map、Tuple、队列操作实战
- Scala深入浅出实战经典:40,Set、Map、TreeSet、TreeMap操作代码实战
- 第40讲:Set、Map、TreeSet、TreeMap操作代码实战
- 王家林亲传《DT大数据梦工厂》第三讲Tuple、Array、Map与文件操作入门实战
- Scala学习第三天: Tuple、Array、Map与文件操作入门实战
- Scala学习笔记09【Map、Tuple、Zip常用操作实战】
- Scala 深入浅出实战经典 第3讲:Tuple、Array、Map与文件操作入门实战
- scala-40:Set、Map、TreeSet、TreeMap操作代码实战
- 第40讲:Set、Map、TreeSet、TreeMap操作代码实战
- scala-03:Tuple、Array、Map与file文件操作入门实战
- scala初学之Tuple、Array、Map、文件操作入门实战
- Scala 深入浅出实战经典 第40讲:Set、Map、TreeSet、TreeMap操作代码实战
- 003-Tuple、Array、Map与文件操作入门实战
- 王家林亲传《DT大数据梦工厂》第三讲Tuple、Array、Map与文件操作入门实战
- Scala教程(十三)Set、Map操作实战
- Dt大数据梦工厂王家林老师 Scala实战详解之第3讲 Tuple、Array、Map与文件操作入门实战