溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Scala中List、Map、Set各類型操作匯總

發(fā)布時(shí)間:2020-05-21 21:49:13 來源:網(wǎng)絡(luò) 閱讀:5421 作者:Spark_2016 欄目:大數(shù)據(jù)

1、Scala中List、Map、Set等各類型函數(shù)操作匯總

package com.scala.study

import scala.collection.immutable.{Queue, TreeMap}
import scala.collection.mutable

/**
 * Created by HP-PC on 2016/5/26.
 */

object ScalaCaseDemo {
 def main(args: Array[String]): Unit = {
   println(1 :: 2 :: List(3, 4)) //單個(gè)元素聯(lián)合ListList(1, 2, 3, 4)
   //
兩個(gè)List進(jìn)行聯(lián)合成一個(gè)ListList(1, 2, 3, 4)
   
println(List(1, 2) ::: List(3, 4))
   println(List("Spark", "Hadoop", "Hive").head) //Spark
   
println(List("Spark", "Hadoop", "Hive").tail) //List(Hadoop, Hive)
   //
List集合拆分成2個(gè)List集合:(List(1,2,3),List(4,5,6))
   
println(List(1, 2, 3, 4, 5, 6).span(_ < 4))
   //List集合中的元素用“—”進(jìn)行拼接
   
println(List("a", "b", "c", "d").mkString("_"))
   //List集合元素進(jìn)行拆分,合并成一個(gè)大的List集合
   
println(List("Spark", "Hadoop").flatMap(_.toList))
   //exists判斷List集合中是否存在元素,forall是判斷整行情況
   
println(List(List(1, 0, 0), List(0, 1, 0), List(0, 0, 0)).exists(row => row.forall(_ == 0)))

   /**
     * foldLeft
就是每次計(jì)算的結(jié)果加上List集合中的元素
     
* 如:1+0=1,2+1=3,3+3=6,4+6=10,5+10=15,...=5050
     */
   
println((1 to 100).toList.foldLeft(0)(_ + _))

   /**
     * foldRight
就是每次List集合中的元素減去計(jì)算結(jié)果
     
* 如:1-100 = -99,2-(-99) = 101,3-101 = -98,4-(-98) = 102,5-102 = -97
     */
   
println(List(1, 2, 3, 4, 5).foldRight(100)(_ - _))
   println(List.apply(1, 2, 3, 4, 5))
   println(List("b", "e", "a", "f").sortWith(_ < _)) //List排序輸出
   
println(List.make(3, 5)) //構(gòu)造List重復(fù)元素:List(5,5,5)
   
println(List.range(1, 5)) //List(1,2,3,4)
   
println(List.range(1, 9, 3)) //List中的元素是按間隔生成:List(1,4,7)
   //
拉鏈操作:List((a,1), (b,2), (c,3), (d,4), (e,5))
   
val zipped = "abcde".toList zip List(1, 2, 3, 4, 5)
   println(zipped)
   println(zipped.unzip) //解拉鏈:(List(a, b, c, d, e),List(1, 2, 3, 4, 5))
   //List
集合進(jìn)行合并:List(1, 2, 3, 4, 5)
   
println(List(List(1, 2), List(3, 4), List(5)).flatten)
   //List集合進(jìn)行合并:List(1, 2, 3, 4, 5)
   
println(List.concat(List(1, 2), List(3, 4), List(5)))
   //兩個(gè)List按給定的函數(shù)進(jìn)行操作:List(300, 1200)
   
println(List.map2(List(100, 200), (List(3, 6)))(_ * _))

   val empty = Queue[Int]()
   val queue1 = empty.enqueue(1)
   val queue2 = queue1.enqueue(List(2, 3, 4, 5))
   println(queue2)
   val (element, left) = queue2.dequeue
   println(element + ":" + left)

   //創(chuàng)建可變Set
   
val data = mutable.Set.empty[Int]
   data ++= List(2, 3, 4)
   data += 4 //Set:重復(fù)數(shù)據(jù)不會(huì)添加
   
println(data)
   data --= List(2, 3) //移除List集合
   
println(data)
   data.clear() //清空Set集合
   
println(data)

   //創(chuàng)建可變Map
   
val map = mutable.Map.empty[String, String]
   map("Java") = "Hadoop"
   
map += {
     "Scala" -> "Spark"
   
}
   map += ("Scala" -> "Tachyon") //相同Key,value值覆蓋
   
println(map)
   println(map("Java"))
   for ((k, v) <- map) println(k + ":" + v)

   //創(chuàng)建treeSet,輸出是按升序排序的
   
val treeSet = mutable.TreeSet(9, 2, 3, 8, 6, 7, 5, 1)
   treeSet += 4
   
println(treeSet)
   val treeSetForStr = mutable.TreeSet("Spark", "Hadoop", "Kafka", "Tachyon")
   println(treeSetForStr)

   //創(chuàng)建treeMap
   
val treemap = TreeMap("Scala" -> "Spark", "Java" -> "Hadoop")
   println(treemap)
 }
}


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI