scala中常用的資料型別
阿新 • • 發佈:2019-01-23
集合類基本上都有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是長度可變的陣列型別。 |
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( |
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) |
摺疊列表:"/:"和":\" sum(List(a,b,c))等價於0+a+b+c 這可以認為是摺疊操作的一個例項: def sum(xs:List[Int]):Int=(0/:xs) (_+_) 另一個操作符: |
val pair = (99,"Luftballons") println(pair._1) println(pair._2) |
Tuple資料型別可以放入不同的資料型別,與List一樣,Tuple資料型別中的元素是不可變的 |
ListBuffer型別是可變長的List型別: 通過"+="操作符在List後面新增元素。 通過"+:"操作符在List前面新增元素。 |
Set也有可變型別和不可變型別的區別,在scala直譯器中預設匯入的Set是不可變型別的Set,如果需要使用可變型別的Set需要匯入: import scala.collection.mutable.Set |
使用例子: val movieSet=Set("Hitch","Poltergeist") |
TreeSet型別:這個是一個不可變型別,將放入集合的元素按順序排列。 |
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的鍵按順序排列。 |
可變佇列可以直接使用"+="和"++="方法新增元素和List進入Queue |
可變和不可變的佇列都可以使用enqueue方法將元素和List放入佇列 |
可變和不可變佇列都可以使用dequeue方法在佇列裡面取出元素,可變佇列使用dequeue方法返回佇列頭的部分。不可變佇列返回的是列表頭元素和剩餘的部分 |
scala.collection.mutable.PriorityQueue類: 這個類在建立的時候,放入的資料要是可比較的資料,使用+=入佇列,入佇列後佇列中的元素會排序,出佇列使用dequeue 方法,會將排序處於第一位的元素出列. val top = new PriorityQueue[(String, Double)]()(Ordering.by[(String,Double), Double](_._2).reverse) |
put放入元素。 |
pop取出元素。 |
top返回stack頭部元素,不出棧。 |
List型別由兩部分組成,List.head這是一個元素和List.tail這是一個List。可以當作一個Queue來使用。 |
在List中Nil表示List中的空值。 |
"::":這個方法在List中用來新增元素。 |
":::":新增List |
List是不可變型別,LinkedList是可變型別。 |