Scala基礎語法 集合操作

2021-10-03 20:27:15 字數 4714 閱讀 8954

scala—集合操作

本文介紹了scala常用的集合主要有set(無序不重複)、sortedset(有序不重複)、list(可重複)

最後詳細介紹了list的一些通用函式主要有

filter、teke、map、reduce、flatten、flatmap、zip、min、count、max、sum等常用的函式

無序不重複set集合操作

scala> val s=set(1,2,3,4,5)

s: scala.collection.immutable.set[int] = set(5, 1, 2, 3, 4)

去掉某個元素

scala> s -5

res0: scala.collection.immutable.set[int] = set(1, 2, 3, 4)

一次去掉多個元素操作

scala> s -(1,2,3)

res1: scala.collection.immutable.set[int] = set(5, 4)

大家會發現剛才去掉的5怎麼又會來了,是因為immutable是不可變集合

直接去掉乙個集合

scala> s - list(4,5)

:13: error: type mismatch;

found : list[int]

required: int

s - list(4,5)

^如果去掉乙個集合需要是用兩個減號

scala> s -- list(4,5)

res3: scala.collection.immutable.set[int] = set(1, 2, 3)

scala> s +6

res4: scala.collection.immutable.set[int] = set(5, 1, 6, 2, 3, 4)

scala> s +1

res5: scala.collection.immutable.set[int] = set(5, 1, 2, 3, 4)

scala> s + (34,56)

res6: scala.collection.immutable.set[int] = set(5, 56, 1, 2, 34, 3, 4)

有序不重複set集合操作 sortedset

scala> sortedset(1,2,3,4,500,4,6,89,56,5,3,1)

:12: error: not found: value sortedset

sortedset(1,2,3,4,500,4,6,89,56,5,3,1)

^需要引入immutable.sortedset

scala> scala.collection.immutable.sortedset(21,45,1,2,5)

res10: scala.collection.immutable.sortedset[int] = treeset(1, 2, 5, 21, 45)

可變不重複集合mutable

scala> import scala.collection.mutable.set

import scala.collection.mutable.set

scala> val set=set(1,2,2,3)

set: scala.collection.mutable.set[int] = set(1, 2, 3)

scala> set + 3

res11: scala.collection.mutable.set[int] = set(1, 2, 3)

scala> set + 4

res12: scala.collection.mutable.set[int] = set(1, 2, 3, 4)

scala> set

res13: scala.collection.mutable.set[int] = set(1, 2, 3)

scala> set += 4

res14: set.type = set(1, 2, 3, 4)

scala> set

res15: scala.collection.mutable.set[int] = set(1, 2, 3, 4)

可以加多個

scala> set +5 +6 +7

res16: scala.collection.mutable.set[int] = set(1, 5, 2, 6, 3, 7, 4)

scala> set

res17: scala.collection.mutable.set[int] = set(1, 2, 3, 4)

scala> set +(10,22,34)

res18: scala.collection.mutable.set[int] = set(1, 34, 2, 3, 10, 4, 22)

scala> set + list(55,66,77)

:14: error: type mismatch;

found : list[int]

required: int

set + list(55,66,77)

^scala> set ++ list(55,66,77)

res20: scala.collection.mutable.set[int] = set(66, 1, 2, 3, 4, 55, 77)

scala> set

res21: scala.collection.mutable.set[int] = set(1, 2, 3, 4)

集合list的通用操作

scala> val list=list(1,1,2,3,4,5,6,7,8,9)

list: list[int] = list(1, 1, 2, 3, 4, 5, 6, 7, 8, 9)

過濾大於5的元素

scala> list.filter(_>5)

res22: list[int] = list(6, 7, 8, 9)

將集合中的元素乘以3

scala> list.map(_ * 3)

res23: list[int] = list(3, 3, 6, 9, 12, 15, 18, 21, 24, 27)

先過濾大於5的資料在讓每個元素乘以2,最後列印出來

scala> list.filter(_>5).map(_ * 2).foreach(println(_))

1214

1618

如果列印的資料只有乙個元素的話可以這樣寫

scala> list.filter(_>5).map(_ * 2).foreach(println)

1214

1618

取出集合中前三個元素

scala> list.take(3)

res29: list[int] = list(1, 1, 2)

reduce(_+_)操作每兩個元素操作一次,操作後的元素在與第三個元素進行操作,迴圈迭代

scala> list.filter(_>5).map(_ * 2).reduce(_+_)

res30: int = 60

求最大值

scala> list.max

res31: int = 9

求最小值

scala> list.min

res32: int = 1

統計個數(注意要跟filter)

scala> list.count(_>5)

res33: int = 4

scala> list.sum

res34: int = 46

zip操作將兩個list集合配對

scala> val list1=list(1,2,3,4,5)

list1: list[int] = list(1, 2, 3, 4, 5)

scala> val list2=list("a","b","c","d","e","f")

list2: list[string] = list(a, b, c, d, e, f)

scala> list1 zip list2

res35: list[(int, string)] = list((1,a), (2,b), (3,c), (4,d), (5,e))

scala>

flatten操作將list集合壓扁

scala> val list3=list(list(1,2),list(3,4),list(5,6))

list3: list[list[int]] = list(list(1, 2), list(3, 4), list(5, 6))

scala> list3.flatten

res38: list[int] = list(1, 2, 3, 4, 5, 6)

flatten一般是和map組合使用

scala> list3

res40: list[list[int]] = list(list(1, 2), list(3, 4), list(5, 6))

scala> list3.flatmap(_.map(3*_))

res41: list[int] = list(3, 6, 9, 12, 15, 18)

看一下只用map不用flatten的效果

scala> list3.map(_.map(_*3))

res42: list[list[int]] = list(list(3, 6), list(9, 12), list(15, 18))

Spark基礎 Scala集合操作

1 scala的集合操作 package com.xlucas import scala.collection.mutable created by xlucas on 2017 8 17 0017.1 預設情況下map構造的是不可變的集合,裡面的內容不可修改,一旦修改就變成新的map,原有的map...

scala基礎語法

一 變數定義 1 val 定義的變數值不可以修改 2 var 定義的變數值可以修改 二 一些變數型別 1 unit 表示不返回任何結果方法的結果型別,相當於void 2 null null 空引用 3 nothing 任何其他類的子型別 4 any 所有其他類的父類 5 anyref 所有引用類的基...

Scala基礎學習 scala集合 005

定長陣列 println test val a new array string 5 a.length a 0 hello 賦值 a 1 取值 b 1 flink 可以修改值,並沒有修改指標 val c array 1,2,3,4,5,6 c.mkstring 轉換為字串 c.mkstring c....