当前位置: 代码迷 >> 综合 >> scala基础语法(三)
  详细解决方案

scala基础语法(三)

热度:78   发布时间:2024-02-02 02:38:54.0

几种集合:

Array,ArrayBuffer\List,ListBuffer\Set,HashSet\Map,HashMap

Array

package com.doit.scala.Break01object ArrayDemo1 {def main(args: Array[String]): Unit = {//定义一个通用数组 没有执行数据类型,可以存储任意类型val arr1 = Array("Jim", 12, 12.22, true)//指定泛型 约束数组中的数据类型  只能写泛型的子类val arr2 = Array[Any]("Jim", 12, 12.22, true)val arr3 = Array[Int](1, 2, 3, 4, 5)val arr4 = Array[Int](1, 2, 3, 4, 5)//数组的取值println(arr1(3))//数组元素重新赋值arr3(0)=100//数组的遍历for(i <- arr3) println(i)arr3.foreach(i=>println(i+""))arr3.map(println(_))//数组中的最大值println(arr3.max)//数组中的最小值println(arr3.min)//首个元素println(arr3 .head)//最后一个元素println(arr3.last)//取出首个元素的子数组println(arr3.tail.toBuffer)//将数组转成List集合println(arr3.toList)//求和println(arr3.sum)//默认排序println(arr3.sorted.toBuffer)//数组的长度println(arr3.length)//修改指定位置的元素arr3.update(2,200)//取出数组 前 几个元素println(arr3.take(3).toBuffer)//不可变数组后面添加一个元素println(arr3.:+ (34).toBuffer)//统计符合条件的个数arr3.count(_>2)}
}

List

package com.doit.scala.Break01import scala.collection.mutable.ListBufferobject ListDemo {def main(args: Array[String]): Unit = {//不可变List集合   数据不允许被修改val ls1: List[Any] = List("sdf", 123, 12.34, true)//向Nil空队列中添加元素组成新的队列val ls2: List[String] = "Hive" :: "Mysql" :: "Spark" :: Nil //List(Hive, Mysql, Spark)val value: Any = ls1 :+ "jkl" //List(sdf, 123, 12.34, true, jkl)//Nil和List.empty[Nothing]是等价的//获取指定位置元素ls1(2)//添加一个元素生成新的listval ls3: List[Any] = ls1 :+ "Python"//合并两个集合val ls4: List[Any] = ls1 ++ ls2//遍历listls4.foreach(println(_))//获取前几位元素ls4.take(3)ls4.takeRight(2)println(value)val buffer1: ListBuffer[Any] = ListBuffer(1, 2, 3, 4, 5)//添加一个非集合yong +=buffer1 += 8//添加一个元族buffer1 += (45,56,67)//ListBuffer(1, 2, 3, 4, 5, 8, 45, 56, 67)//添加一个集合  用++=buffer1 ++= ls4 //ListBuffer(1, 2, 3, 4, 5, 8, 45, 56, 67, sdf, 123, 12.34, true, Hive, Mysql, Spark)println(buffer1)}
}

Set

package com.doit.scala.Break01import scala.collection.mutableobject SetDemo {def main(args: Array[String]): Unit = {//Set和list的最大区别在于Set中不可以存储重复数据 ,通常使用Set来实现元素的去重!!//Set集合也分为可变Set和不可变的Set,使用包名来区分可变和不可变val set1: Set[Any] = Set(1, 23, 4, 5, 5, 6, 6, 7)  //Set(5, 1, 6, 7, 23, 4)//可变setval set2 = new mutable.HashSet[Int]()set2.add(12)set2 += 13set2 += (1,2,3,4,5,6,2348)println(set2) //Set(12, 1, 13, 5, 2, 6, 3, 2348, 4)  Set是无序的set2.remove(1)}
}

Map

package com.doit.scala.Break01import scala.collection.mutable
import scala.collection.mutable.HashMapobject MapDemo {def main(args: Array[String]): Unit = {//不可变Mapval map1: Map[String, Int] = Map[String, Int](("n1", 1), ("n2", 2), ("n3", 3))// 如果在一个map中 key是相通的 只会拿到最后写入的那个valueval m = Map("n4" -> 10, "n4" -> 11, "n4" -> 12)//Map(n4 -> 12)val map2: mutable.HashMap[String, Int] = new mutable.HashMap[String, Int]()map2.put("hl",1)map2.put("zh",2)map2.put("xl",3)map2.put("eg",4)//根据key获取元素,没有就给默认值println(map2.getOrElse("hh",2))//根据key更新数据 有就不做操作  没有就加上,后面的数println(map2.getOrElseUpdate("hl",45))println(map2.getOrElseUpdate("hh",43))//删除keymap2.remove("")println(map2.get("zh"))  //Some(2)//是否包含keymap2.contains("")//返回迭代器map2.keys//返回Set 都是Keyprintln(map2.keySet)println(map2)}
}