Scala 入门2(数组、List、Set、Map、元组、Option、Iterator)
生活随笔
收集整理的這篇文章主要介紹了
Scala 入门2(数组、List、Set、Map、元组、Option、Iterator)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 1. 數(shù)組
- 2. List
- 3. Set
- 4. Map
- 5. 元組
- 6. Option
- 7. 迭代器
學自 https://www.runoob.com/scala/scala-tutorial.html
1. 數(shù)組
- 使用 () 來取索引處的元素
2. List
val site: List[String] = List("michael", "csdn","blog")val site1 = "michael" :: ("csdn" :: Nil)val empty: List[Nothing] = List()val empty1 = Nilval dim: List[List[Int]] = List(List(1, 0, 0),List(0, 1, 0),List(0, 0, 0, 1))val dim1 = (1::(0::(0::Nil)))::(0::(1::(0::Nil)))::(0::(0::(0::(1::Nil))))::Nilprintln(site.head) // michaelprintln(site.tail) // 除第一個元素之外的 List(csdn, blog)println(empty.isEmpty) // trueprintln(dim.isEmpty) // false// 列表連接// 方法1 ::: 運算var site0 = site ::: site1println(site0) // List(michael, csdn, blog, michael, csdn)// 方法2 List.:::() 方法, 注意連接的順序site0 = site.:::(site1)println(site0) // List(michael, csdn, michael, csdn, blog)println(site) // List(michael, csdn, blog)// 方法3 使用 concat 方法site0 = List.concat(site, site1)println(site0) // List(michael, csdn, blog, michael, csdn)// List.fill() 填入重復數(shù)量的元素val site3 = List.fill(3)("michael") // 重復3次println(site3) // List(michael, michael, michael)// List.tabulate() 通過給定函數(shù)創(chuàng)建列表val squares = List.tabulate(6)(n => n*n+1)println(squares) // List(1, 2, 5, 10, 17, 26)// 二維val mul = List.tabulate(4,5)(_ * _)println(mul)// List(List(0, 0, 0, 0, 0), List(0, 1, 2, 3, 4), List(0, 2, 4, 6, 8), List(0, 3, 6, 9, 12))// List.reverse 反轉(zhuǎn)println(squares.reverse) // List(26, 17, 10, 5, 2, 1)3. Set
// set沒有重復,默認是不可變集合, 改變后,生成新的setval set = Set(1,2,3)println(set.getClass.getName) // scala.collection.immutable.Set$Set3println(set.exists(_%2 == 0)) // trueprintln(set.drop(1)) // Set(2, 3)println(set) // Set(1, 2, 3)// 可變集合import scala.collection.mutableval mutableSet = mutable.Set(1,2,3)println(mutableSet.getClass.getName) // scala.collection.mutable.HashSetprintln(mutableSet.add(4)) // trueprintln(mutableSet.remove(1)) // truemutableSet += 5mutableSet -= 2println(mutableSet) // Set(5, 3, 4)// .head .tail .isEmpty 跟 List 的含義一樣// 連接集合 ++ or Set.++() ,會去重val s1 = Set("michael","ming")val s2 = Set("michael", "scala")var s0 = s1 ++ s2println(s0) // Set(michael, ming, scala)s0 = s1.++(s2)println(s0) // Set(michael, ming, scala)// 最值 Set.min, Set.maxval num = Set(1,2,3,4,5,6,-1)println(num.min, num.max) // (-1, 6)// 交集 Set.& or Set.intersectval num1 = Set(1,2,3,11,12)println(num.&(num1)) // Set(1, 2, 3)println(num.intersect(num1)) // Set(1, 2, 3)4. Map
// Map 默認不可變的 Map, 可變的要import scala.collection.mutable.Mapval colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")println(colors("red")) // #FF0000println("all keys: " + colors.keys) // all keys: Set(red, azure)println("all values: " + colors.values) // all values: MapLike(#FF0000, #F0FFFF)println("isEmpty ? : " + colors.isEmpty) // isEmpty ? : falseval num3 = Map()println(num3.isEmpty) // true// 合并 ++運算 or Map.++()val colors1 = Map("red" -> "#FF0000","azure" -> "#F0FFFF","peru" -> "#CD853F")println(colors ++ colors1) // Map(red -> #FF0000, azure -> #F0FFFF, peru -> #CD853F)println(colors.++(colors1)) // Map(red -> #FF0000, azure -> #F0FFFF, peru -> #CD853F)// 如果有 key 一樣,value不一樣,以后者的為準,請自行測試// 輸出 keys, valuescolors.keys.foreach{i => print("key: " + i); println(" value: " + colors(i))} // key: red value: #FF0000// key: azure value: #F0FFFF// 指定key是否存在println(colors.contains("red")) // trueprintln(colors.contains("blue")) // false5. 元組
// 元組val t = (1, 3.14, "michael")println(t._1) // 1, 下標從1開始 ._idxt.productIterator.foreach{ // 遍歷i => println("value: " + i)}// 元組轉(zhuǎn)字符串println(t.toString()) // (1,3.14,michael)// 交換元素val t1 = (1,2)println(t1.swap) // (2,1) 長度只能為 26. Option
// Option 表示一個值是可選的val myMap = Map("k1" -> "v1")val v1 : Option[String] = myMap.get("k1")val v2 : Option[String] = myMap.get("k2")println(v1) // Some(v1)println(v2) // Nonedef show(x : Option[String]) = x match {case Some(s) => scase None => "?"}println(show(myMap.get("k1"))) // v1println(show(myMap.get("k2"))) // ?// getOrElse() 獲取存在的元素或者使用默認值val a : Option[Int] = Some(5)val b : Option[Int] = Noneprintln(a.getOrElse(0)) // 5println(b.getOrElse(10)) // 不存在,取默認值10println(a.isEmpty) // falseprintln(b.isEmpty) // true7. 迭代器
// Iterator 訪問集合的方法// it.next() 返回下一個元素,并更新迭代器// it.hasNext 是否還有元素val it = Iterator("baidu", "alibaba", "tencent")while(it.hasNext){println(it.next())}val it1 = Iterator(1,2,3,-1)val it2 = Iterator(1,2,3,-1)val it3 = Iterator(1,2,3,-1)println(it1.min) // -1println(it2.max) // 3, 需要分開寫,不能寫 it1.maxprintln(it1.size) // 0, 迭代器走到頭了,剩余長度0println(it3.length) // 4總結(jié)
以上是生活随笔為你收集整理的Scala 入门2(数组、List、Set、Map、元组、Option、Iterator)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 2194. Excel
- 下一篇: Chapter1-1_Speech_Re