package cn.tedu.api
object CollectionDemo1 {
// 在Scala中,集合分为两大类:可变集合和不可变集合
// 可变和不可变是指集合定义好之后大小是否可以改变
// 无论可变集合还是不可变集合,都包含:Array、List、Set、Map、Turple(元组是不可变集合)、Queue
// 数组:Array(不可变)和ArrayBuffer(可变)
// List:List(不可变)和ListBuffer(可变)
// List、Set、Map的可变和不可变张的一样,所以在使用的时候需要指定包
def main(args: Array[String]): Unit = {
// 不可变
// import scala.collection.immutable.{List,Set,Map, HashMap, HashSet}
// 可变
// import scala.collection.mutable.{ListBuffer,Set,Map, HashMap, HashSet}
// var s = new scala.collection.immutable.HashSet[String]
// 并不是操作原来的集合,而是产生了一个新的集合
// s = s.+("abc")
// println(s)
// turple1 -> turple22
var t = (3, 'c', false, 5.23)
println(t._1)
println(t._2)
println(t._3)
println(t._4)
// Turple可以嵌套Turple
var t2 = (1,("amy", 15), (16, 17, 16), ("alex", 14))
println(t2._3._2)
}
}
package cn.tedu.api
object CollectionDemo2 {
def main(args: Array[String]): Unit = {
// 创建数组
// var arr1: Array[Int] = new Array[Int](5)
// 如果使用这种方法创建数组,底层使用的是apply方法
// var arr2: Array[Int] = Array[Int](5, 2, 3)
// 创建List
// var list1: List[String] = List[String]("a", "b", "c")
// var list2: List[String] = new List[String](5)
// 表示创建了一个list
// var list2: List[String] = "a" :: "b" :: "c" :: Nil
// println(list2)
var list: List[Int] = 1 :: 2 :: 3 :: 4 :: 5 :: Nil
// 遍历list
// 方式一:通过下标遍历
// for(i <- 0 until list.size)
// println(list(i))
// 方式二:增强for循环
// for (i <- list)
// println(i)
// 方式三:foreach
// list.foreach { (x: Int) => println(x) }
// list.foreach { x => println(x) }
// list.foreach { println(_) }
list.foreach { println }
}
}
package cn.tedu.api
import java.io.IOException
object ExceptionDemo {
// 在Scala中不关注异常,所以也可以不用抛出异常
@throws[IOException]
def test(i: Int, j: Int) = {
if (j == 0)
throw new IOException
i / j.toDouble
}
def main(args: Array[String]): Unit = {
try {
var r = test(3, 0)
} catch {
// 如果需要捕获不同的异常,只需要添加case即可
// 小异常要放在大异常的前边
case e: NullPointerException => e.printStackTrace()
case e: IllegalArgumentException => println(e.getMessage)
case e: Exception => e.printStackTrace()
}
}
}
package cn.tedu.api
object ListDemo {
def main(args: Array[String]): Unit = {
// var list = List[Int](3, 5, 2, 7, 1, 8, 9)
// 将集合中的元素一一取出按照指定的规则进行映射
// var result = list.map { x => x * x }
// 获取集合中大于5的元素
// var result = list.filter { x => x > 5 }
// 在列表头部添加一个元素,返回一个新的list
// var result = list.+:(5)
// var result = (5) +: list
// 翻转集合
// var result = list.reverse
// 将结合中的元素拷贝到一个数组中
// var arr = new Array[Int](list.size)
// list.copyToArray(arr)
// var list = List[String]("hello", "hadoop", "hello", "zookeeper", "hello", "scala")
// var result = list.groupBy { x => x }
// result.foreach(println)
var list = List[Int](3, 5, 2, 7, 1, 8, 9)
// 将list中的所有的元素进行求和
// var result = list.reduce((x, y) => x + y)
var result = list.reduce(_ + _)
println(result)
}
}