1. 程式人生 > >scala中常用的資料型別

scala中常用的資料型別

集合類基本上都有mutable和immutable兩種型別,其中immutable的型別在定義好之後就不能再改變,既不能改變集合中的值也不能改變集合的長短

Array陣列型別:
使用例子:
val arr = new Array[String]("a","b","c")
val arr2 = new Array[String](3)
arr2(0)="a"
arr2(1)="b"
arr2(2)="c"
arr3=Array("a","b","c") 使用Array的時候要查一查ArrayOpt這個類,這個類是Array的隱式轉化類,提供了大量Array的操作
Array中只能放入同一種類型的資料。
ArrayBuffer是長度可變的陣列型別。
List型別:
val lis = List(1,2,3)
List資料型別和Array一樣,只能放入同一種類型的資料,但是lis在建立之後,List中的元素是不可變的。
List的“::”:用來在List前面增加一個元素返回一個新的List 例如: valoneTwoThree=List(1,2,3) valoneToFour=1::oneTwoThree println(oneTwoThree) println(oneToFour)
List的“:::”:用來將兩個List組合成一個List 例如: valoneTwo=List(
1,2) valthreeFour=List(3,4) valoneToFour=oneTwo:::threeFour println(oneTwo) println(oneToFour)
List中的常用方法:



使用插入排序排列List:
objectExample{ defisort(xs:List[Int]):List[Int]= if(xs.isEmpty)Nil elseinsert(xs.head,isort(xs.tail)) definsert(x:Int,xs:List[Int]):List[Int]= if(xs.isEmpty||x<=xs.head)
x::xs elsexs.head::insert(x,xs.tail) defmain(args:Array[String]){ vallis1=List(2,3,5,1,9,6,7,8) vallis_sort=isort(lis1) println(lis_sort) } }
摺疊列表:"/:"和":\"
sum(List(a,b,c))等價於0+a+b+c
這可以認為是摺疊操作的一個例項:
def sum(xs:List[Int]):Int=(0/:xs) (_+_)

另一個操作符:

Tuple型別:
val pair = (99,"Luftballons")
println(pair._1)
println(pair._2)
Tuple資料型別可以放入不同的資料型別,與List一樣,Tuple資料型別中的元素是不可變的
ListBuffer型別是可變長的List型別:
通過"+="操作符在List後面新增元素。
通過"+:"操作符在List前面新增元素。
Set型別:
Set也有可變型別和不可變型別的區別,在scala直譯器中預設匯入的Set是不可變型別的Set,如果需要使用可變型別的Set需要匯入:
import scala.collection.mutable.Set
使用例子:
val movieSet=Set("Hitch","Poltergeist")
TreeSet型別:這個是一個不可變型別,將放入集合的元素按順序排列。
Map型別:
Map和Set一樣,可變和不可變型別,在scala直譯器中預設是不可變型別的Map,使用可變型別的時候,需要匯入:
import scala.collection.mutable.Map
使用例子:
val treasureMap = collection.mutable.Map[Int,String]()
treasureMap += (1->"Go to island.")
treasureMap += (2->"Find big X on groud.")
treasureMap += (3->"Dig.")
println(treasureMap(2))
Map還可以使用+=的方法更新Map中的值。
例如:
treasureMap += (1->"Go to island,again.")
則treasureMap(1)會被更新為Go to island,again.
TreeMap這是個不可變型別,將放入的Map的鍵按順序排列。
Queue佇列
可變佇列可以直接使用"+="和"++="方法新增元素和List進入Queue
可變和不可變的佇列都可以使用enqueue方法將元素和List放入佇列
可變和不可變佇列都可以使用dequeue方法在佇列裡面取出元素,可變佇列使用dequeue方法返回佇列頭的部分。不可變佇列返回的是列表頭元素和剩餘的部分
scala.collection.mutable.PriorityQueue類:
這個類在建立的時候,放入的資料要是可比較的資料,使用+=入佇列,入佇列後佇列中的元素會排序,出佇列使用dequeue 方法,會將排序處於第一位的元素出列.
val top = new PriorityQueue[(String, Double)]()(Ordering.by[(String,Double), Double](_._2).reverse)
Stack棧型別:
put放入元素。
pop取出元素。
top返回stack頭部元素,不出棧。
List型別
List型別由兩部分組成,List.head這是一個元素和List.tail這是一個List。可以當作一個Queue來使用。
在List中Nil表示List中的空值。
"::":這個方法在List中用來新增元素。
":::":新增List
List是不可變型別,LinkedList是可變型別。