巩固下基础,练习下
map
foreach
zip
partition
find
flatmap : map后将结构展开
flatten :将结构展开
object ScDemo3App {
def main(args: Array[String]): Unit = {
val list = List(1,2,3,4,5,6,7,8,9)
// list.map(x => x*2).foreach(println)
// list.filter(x => x%2 == 0).foreach(pr
/**
* 变成元组 (1,4)(2,5)...
* 位数不够的就省略了
*/
List(1,2,3,6).zip(List(4,5,6,7)).foreach(println)
/**
* 分成两块了
* (List(2, 4, 6, 8),List(1, 3, 5, 7, 9))
*/
println(list.partition(x => x % 2 == 0))
/**
* Some(2)
* 第一个匹配到的
*/
println(list.find(_ % 2 == 0))
/**
* List(1, 2, 3, 5, 6, 7, 8)
*/
println(List(List(1, 2, 3), List(5, 6, 7, 8)).flatten)
val myList = List(List(1,2,3),List(4,5,6,7))
/**
* List(2, 4, 6, 8, 10, 12, 14)
*/
println(myList.flatMap(x => x.map(_ * 2)))
}
}
object ScDemo4App {
def main(args: Array[String]): Unit = {
// mapMethod()
listMethod()
// vectorMethod()
setMethod()
}
def mapMethod(): Unit = {
//不可变集合
val map = scala.collection.immutable.Map("zhangsan" -> "23", "lisi" -> "22")
println(map.getOrElse("zhangsan", -1))
}
def listMethod(): Unit = {
//不可变列表
val list = List(1, 2, 3, 4)
println(list.head) //1
println(list.tail) //List(2, 3, 4)
println(list.isEmpty) //false
println(list.mkString("||"))
//可变列表 不推荐使用!
val myList = scala.collection.mutable.LinkedList(1, 2, 3, 4)
var cur = myList
while (cur != Nil) {
cur.elem = cur.elem * 2
cur = cur.next
}
println(myList)
}
/**
* 序列
*/
def vectorMethod(): Unit = {
val vec = Vector(1, 3, 5, 6)
println(vec.find(_ % 2 == 0)) //Some(6)
println(vec.updated(2, 100)) //Vector(1, 3, 100, 6)
println("first" + Range(0, 5)) //fristRange(0, 1, 2, 3, 4)
println("second:" + (0 to 5)) //second:Range(0, 1, 2, 3, 4, 5)
println((0 until 5)) //Range(0, 1, 2, 3, 4)
}
def setMethod(): Unit = {
val ss = Set(1, 2, 3)
println(ss + 1)
println(ss + 4)
println(ss.contains(1))
val ss2 = Set(2)
println(ss2.subsetOf(ss))
println(ss.intersect(ss2)) //Set(2)
println(ss.drop(2))
}
}
object ScDemo5App {
def main(args: Array[String]): Unit = {
// test1()
// test2()
// test3()
test4()
}
def test1(): Unit = {
var index = 1
val sign = "="
sign match {
case "+" => index = 10
case "-" => index = 20
case _ if index > 0 => index = 100
case _ => index = 200
}
println(index)
}
/**
* 注意是单引号 匹配字符
*/
def test2(): Unit = {
val str = "Hello World"
str(2) match {
case 'w' => println("this is w")
case 'e' => println("this is e")
case 'l' => println("this is l")
case _ => println("Nothing")
}
}
def test3(): Unit = {
val tt: Any = 4d
tt match {
case x: String => println("this is String" + x)
case s: Double => println("this is Double" + s)
case y: Int => println("this is Int" + y)
case _ => println("this is anything")
}
}
def test4(): Unit = {
val list = List(1, 2, 3)
list match {
case List(0) => println("list 0")
case List(x, y) => println("two:" + (x + y))
case List(x, y, z) => println("three:" + (x + y + z))
case _ => println("this is nothing")
}
}
}