```scala
object HelloWorld {
def main(args: Array[String]): Unit = {
/** **********************************/
// 默認為不可變List
var c = List[Char]('a', 'b', 'c')
for (elem <- c) {
println(elem)
} // a b c
var x = 'x' +: c // (x, a, b, c)
var y = c :+ 'x' // (a, b, c, x)
/** **********************************/
// 導入可變集合
import scala.collection.mutable._
var lb = ListBuffer[Int](1, 2, 3, 4)
lb.foreach(println) // 1 2 3 4
lb += 100
println(lb) // ListBuffer(1, 2, 3, 4, 100)
lb += (21, 33)
println(lb) // ListBuffer(1, 2, 3, 4, 100, 21, 33)
88 +=: lb
println(lb) // ListBuffer(88, 1, 2, 3, 4, 100, 21, 33)
List(77, 66) ++=: lb
println(lb) // ListBuffer(77, 66, 88, 1, 2, 3, 4, 100, 21, 33)
/** **********************************/
var l = List[Int](2, 3, 4, 6, 8, 9, 11, 20)
// 分成3組
var x2 = l grouped 3 // 相當于 l.grouped(3)
while (x2.hasNext) {
println(x2.next())
// List(2, 3, 4)
// List(6, 8, 9)
// List(11, 20)
}
var y2 = l sliding 2 // 相當于 l.sliding(2)
y2.foreach(println)
// List(2, 3)
// List(3, 4)
// List(4, 6)
// List(6, 8)
// List(8, 9)
// List(9, 11)
// List(11, 20)
/** **********************************/
var a1 = Array[Int](1, 2, 3, 4)
var a2 = Array[Int](100, 200, 300, 400)
// 拼接,a3為不可變集合
var a3 = List.concat(a1, a2)
a3.foreach(println) // 1 2 3 4 100 200 300 400
// a3(3) = 1000 非法操作
// 拼接,a4為可變集合
var a4 = a1 ++ a2
a4.foreach(println) // 1 2 3 4 100 200 300 400
a4(3) = 9999
a4.foreach(println) // 1 2 3 9999 100 200 300 400
// 過濾,保留結果為true的元素
var a5 = a3.filter(_ % 2 != 0)
a5.foreach(println) // 1 3
// 反轉
var a6 = a3.reverse
println(a6) // List(400, 300, 200, 100, 4, 3, 2, 1)
// 按條件分組,true的為一組,false為一組
val a7 = a3.groupBy(t => t%2 == 0)
println(a7) // Map(false -> List(1, 3), true -> List(2, 4, 100, 200, 300, 400))
// 切片
val a8 = a3.slice(2, 4)
println(a8) // List(3, 4)
val b1 = List[Int](1, 2,5, 3, 7, 10)
/** **********************************/
// 升序排序
var b2 = b1.sorted
println(b2) // List(1, 2, 3, 5, 7, 10)
// 降序排序
var b3 = b1.sorted(Ordering.Int.reverse)
println(b3) // List(10, 7, 5, 3, 2, 1)
// 升序排序
var b4 = b1.sortWith(_<_)
println(b4) // List(1, 2, 3, 5, 7, 10)
// 降序排序
var b5 = b1.sortWith(_>_)
println(b5) // List(10, 7, 5, 3, 2, 1)
// 升序排序
var b6 = b1.sortBy(x => x)
println(b6) // List(1, 2, 3, 5, 7, 10)
// 降序排序
var b7 = b1.sortBy(x=> x * (-1))
println(b7) // List(10, 7, 5, 3, 2, 1)
}
}
```
- Scala是什么?
- Scala特性
- 開發環境搭建
- 環境搭建
- windows下的環境搭建
- IntelliJ IDEA環境搭建
- Scala關鍵字
- Hello, World
- 數據類型
- 數據類型
- 數據類型層次結構
- 字面量
- Null類型
- Nothing類型
- Unit類型
- 變量與常量
- type定義類型別名
- 字符串插值器
- 條件控制
- 循環控制
- 數組
- 元組
- 集合
- 集合分類
- List常用操作
- Set常用操作
- Map常用操作
- 函數
- 函數聲明與調用
- 函數與方法的區別
- 函數注意事項
- 匿名函數
- 可變參數
- 高階函數
- 中置表達式
- 函數嵌套
- 函數科里化
- 隱式參數
- 隱式函數
- 閉包
- 類和對象
- Java與Scala的比較
- 有關類與對象概念
- 類
- 類的定義和調用
- 類的繼承
- 抽象類
- 單例對象
- 伴生對象和伴生類
- 特質
- 定義特質
- 混入特質
- 抽象類與特質的選擇
- 自身類型
- 依賴注入
- this別名
- 樣例類
- 枚舉類
- 泛型類
- 包與包對象
- 模式匹配
- 基本語法
- 匹配模式
- 偏函數
- 注解
- 運算符
- 正則表達式
- 隱式類
- 異常處理
- 高級類型
- 結構類型
- 復合類型