Scala——三個容器:List Set Map
列表(List)
intList定義一個列表,intList.head返回列表頭部,也就是第一個值,而intList.tail返回的是列表的尾部但返回值仍是一個列表
例如:
scala> val intList = List(1,2,3,4,5,6,7,8)
intList: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8)
scala> intList.head
res17: Int = 1
scala> intList.tail
res18: List[Int] = List(2, 3, 4, 5, 6, 7, 8)
列表的頭部增加新的元素`運用 ::
scala> val intListOther = 0::intList
intListOther: List[Int] = List(0, 1, 2, 3, 4, 5, 6, 7, 8)
Nil表示空列表
scala> val intList = 1::2::3::Nil
intList: List[Int] = List(1, 2, 3)
利用 ::連線兩個列表
scala> val intList = 1::2::3::Nil
intList: List[Int] = List(1, 2, 3)
scala> val intList1 = List(1,2)
intList1: List[Int] = List(1, 2)
scala> val intList2 = List(3,4)
intList2: List[Int] = List(3, 4)
scala> val intList3 = intList1:::intList2
intList3: List[Int] = List(1, 2, 3, 4)
利用intList.sum函式求和
scala> val b=List(3,4)
b: List[Int] = List(3, 4)
scala> b.sum
res4: Int = 7
集(set)
建立一個集合
scala> var mySet=Set("wuhan","yangtuo")
mySet: scala.collection.immutable.Set[String] = Set(wuhan, yangtuo)
向集合中新增元素
scala> mySet +="laosi"
scala> mySet
res6: scala.collection.immutable.Set[String] = Set(wuhan, yangtuo, laosi)
如果想在不可變val資料集中新增元素時是會出現報錯的,所以需要宣告為var,這時候我們需要呼叫 import scala.collection.mutable.Set包
例如:
向不可變資料集val中新增元素時是會出現報錯
scala> val mySet=Set("wuhan","yangtuo")
mySet: scala.collection.immutable.Set[String] = Set(wuhan, yangtuo)
scala> mySet +="laosi"
<console>:20: error: value += is not a member of scala.collection.immutable.Set[String]
mySet +="laosi"
^
所以要宣告為var才能新增進去
scala> import scala.collection.mutable.Set
import scala.collection.mutable.Set
scala> val mySet=Set("wuhan","yangtuo")
mySet: scala.collection.mutable.Set[String] = Set(wuhan, yangtuo)
scala> mySet +="laosi"
res11: mySet.type = Set(wuhan, laosi, yangtuo)
雖然可變集和不可變集都有新增或刪除元素的操作,但是,二者有很大的區別。對不可變集進行操作,會產生一個新的集,原來的集並不會發生變化。 而對可變集進行操作,改變的是該集本身。
對映(Map)
對映(Map)是一系列鍵值對的集合,所有的值,都可以通過鍵來獲取。
建立一個不可變對映
例如:
scala> val dashuju = Map("a" -> "wuhan", "b" -> "yangtuo","c"->"laosi")
dashuju: scala.collection.immutable.Map[String,String] = Map(a -> wuhan, b -> yangtuo, c -> laosi)
獲取對映中的值
scala> println(dashuju("a"))
wuhan
使用contains方法檢視對映中是否存在某個鍵
scala> val a=if(dashuju.contains("a")) dashuju("a") else 0
a: Any = wuhan
scala> val a=if(dashuju.contains("d")) dashuju("d") else 0
a: Any = 0
向不可變val對映中新增元素時是會出現報錯,所以要宣告為var才能新增進去
scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map
scala> val dashuju = Map("a" -> "wuhan", "b" -> "yangtuo","c"->"laosi")
dashuju: scala.collection.mutable.Map[String,String] = Map(b -> yangtuo, a -> wuhan, c -> laosi)
scala> dashuju("d")="songjiahui"
也可以使用+=操作來新增新的元素
scala> dashuju +=("e"->"xinxin")
res1: dashuju.type = Map(e -> xinxin, b -> yangtuo, a -> wuhan, c -> laosi)
迴圈遍歷對映
格式:for ((k,v) <- 對映) 語句塊
利用printf 格式化迴圈輸出
%d 十進位制數字
%s 字串
%c 字元
%e 指數浮點數
%f 浮點數
%i 整數(十進位制)
%o 八進位制
%u 無符號十進位制
%x 十六進位制
%% 列印%
% 列印%
例如:
\n表示換行
scala> for((k,v)<-dashuju)printf("xuehao: %s ximing: %s\n",k,v)
xuehao: e ximing: xinxin
xuehao: b ximing: yangtuo
xuehao: a ximing: wuhan
xuehao: c ximing: laosi
列印所有的鍵keys
scala> for((k,v)<-dashuju)printf("xuehao: %s ximing: %s\n",k,v)
xuehao: e ximing: xinxin
xuehao: b ximing: yangtuo
xuehao: a ximing: wuhan
xuehao: c ximing: laosi
scala> for(k<-dashuju.keys)println(k)
e
b
a
c
列印所有的值values
scala> for(k<-dashuju.values)println(k)
xinxin
yangtuo
wuhan
laosi
相關文章
- List、Set、Queue、Map
- List,Set,Queue,Map介面
- Java容器(List、Set、Map)知識點快速複習手冊Java
- set\list\map部分原始碼解析原始碼
- List Set Map之間的不同
- 你對Collection中Set、List、Map理解?
- Java 中的泛型 集合(List,Set) MapJava泛型
- Java集合體系總結 Set、List、Map、QueueJava
- Java執行緒安全的集合類:Map、List、SetJava執行緒
- list與Set、Map區別及適用場景
- Kotlin——高階篇(四):集合(Array、List、Set、Map)基礎Kotlin
- Scala操作Map
- C++進階(map+set容器模擬實現)C++
- Set 和Map
- 1、List 和 Set 、Map的區別-金三銀四跳槽季Java面試大綱(答案篇)Java面試
- Java集合中List,Set以及Map等集合體系詳解(史上最全)Java
- 詳解Java 容器(完結篇)——詳解容器的設計模式、List、Map、併發容器Java設計模式
- map、unordered_map、set 和 unordered_set的小介紹
- set容器幾個關鍵函式函式
- java的各種集合為什麼不安全(List、Set、Map)以及代替方案Java
- 好程式設計師Java培訓Java容器類List和Set分析程式設計師Java
- Java筆記——【List、Set】Java筆記
- 【JavaSE】集合類Collection集合Map集合的簡單介紹,List介面,中三個常用子類ArrayList、Vector、LinkedList之間的比較。Set介面。Java
- map/ multimap容器
- map和set對vector排序排序
- es6-Set與Map
- Java : List中 根據map的某個key去重Java
- Hash Map集合和Hash Set集合
- ES6【Set 、 WeakSet 、Map、WeakMap 】
- Set和Map資料結構。資料結構
- ES6 Set,WeakSet,Map,WeakMap
- list中add、set方法詳解
- Python 的List 和tuple,Dict,SetPython
- JavaScript中的new map()和new set()使用詳細(new map()和new set()的區別)JavaScript
- 強大的set容器
- Scala(三):類
- Java Map和List常見操作Java
- 【深入淺出ES6】Set\Map