object Scala_study2 { def main(args: Array[String]): Unit = { /* 1.2.1 定长数组和可变数组 scala中数组分为定长数组和可变数组.默认情况下是不可变(Immutable)数组; 若要定义可变数组,需要显式导入包 */ val arrStr = Array("Scala","Spark") import scala.collection.mutable.ArrayBuffer val arrayBufferInt = ArrayBuffer[Int]() /* 1.2.2 数组常用算法 */ arrStr(0) = "Storm" //使用()取下标 arrStr.toBuffer //将不可变数组转换成可变数组 for(i <- 0 until arrStr.length) println(arrStr(i)) //遍历 for(elem <- arrStr) println(elem) //遍历 arrayBufferInt += 1 //可变数组可以用+=在尾端添加元素 arrayBufferInt += (2,3,4,5) // 可变数组可以用+=在尾端添加多个元素 arrayBufferInt ++= Array(6,7,8,9,10,11,12) //可变数组可以用++=在尾端添加任何集合 arrayBufferInt.trimEnd(2) //除移最后的2个元素 arrayBufferInt.remove(2) //除移下标为2的元素 arrayBufferInt.remove(2,4) //除移从下标为2的元素开始的4个元素 arrayBufferInt.toArray //将可变数组转为不可变数组 /* * 1.2.3 Map映射 * 默认情况下scala使用不可变的映射,如果想使用可变集,必须明确导入scala.collection.mutable.Map类 * * */ val bigData = Map("Scala" -> 35, "Hadoop" -> 30, "Spark" -> 50) println(bigData("Scala"))//通过键,获得值 println(bigData.contains("Hadoop"))//是否包含给定的键 println(bigData.getOrElse("Spark",70))//通过键获得值,如果不包含给定键,则返回给定的值 println(bigData.mkString(" { "," , "," } ")) println(bigData.drop(2)) //构造可变集合 val bigDataVar = scala.collection.mutable.Map("Scala" -> 35, "Hadoop" -> 30, "Spark" -> 50) bigDataVar("Spark") = 100 //更新键值对,如果不存在则添加之 bigDataVar += ("Kafka" -> 69) //使用+=添加 bigDataVar += ("Kafka" -> 69) //使用-=删除 for( (k,v) <- bigDataVar) println(k + ":" + v) for(k <- bigDataVar.keySet) println(k) /* * 1.2.4 Tuple元组 * 元组是()包住的数据集合,里面可以存放不同类型 * */ val tuple1 = (1,"Hello") println(tuple1._1) //打印第一个元素 println(tuple1._2) //打印第二个元素 /* * 1.2.5 List(用链表实现) * */ val fruit:List[String] = List("apples", "oranges", "pears") val nums:List[Int] = List(1,2,3,4) val empty:List[Nothing] = List() //定义空list val dim:List[List[Int]] = List( List(1,0,0),List(0,1,0),List(0,0,1) ) //定义二维列表 //列表定义的另一种方式 //Nil代表空列表 val fruit2 = "apples" :: ("oranges" :: ("pears" :: Nil)) val nums2 = 1 :: (2 :: (3 :: (4 :: Nil))) val empty2 = Nil val dim2 = (1 :: (0 :: (0 :: Nil))) :: (0 :: (1 :: (0 :: Nil))) :: (0 :: (0 :: (1 :: Nil))) :: Nil fruit.head //head方法去除第一个元素 fruit.tail //除了第一个值外的所有元素构成的列表 fruit.isEmpty //判断是否为空 //用:::或者List.:::或者List.concat串联列表 val fruit3 = "apples" :: ("oranges" :: ("pears" :: Nil)) val fruit4 = "mangoes" :: ("banana" :: Nil) var fruit5 = fruit3 ::: fruit4 fruit5 = fruit3.:::(fruit4) fruit5 = List.concat(fruit3,fruit4) /* * 1.2.6 Set * * * */ var s : Set[Int] = Set() s = Set(1,3,5,7) } }
Scala学习1.2 Scala中Array Map等数据结构实战
最新推荐文章于 2023-04-20 19:53:04 发布