scala基础语法(三)

几种集合:

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

Array

package com.doit.scala.Break01

object 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.Break01

import scala.collection.mutable.ListBuffer

object 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)
    //添加一个元素生成新的list
    val ls3: List[Any] = ls1 :+ "Python"
    //合并两个集合
    val ls4: List[Any] = ls1 ++ ls2
    //遍历list
    ls4.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.Break01

import scala.collection.mutable

object 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)
    //可变set
    val set2 = new mutable.HashSet[Int]()
    set2.add(12)
    set2 += 13
    set2 += (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.Break01

import scala.collection.mutable
import scala.collection.mutable.HashMap

object MapDemo {
  def main(args: Array[String]): Unit = {
    //不可变Map
    val map1: Map[String, Int] = Map[String, Int](("n1", 1), ("n2", 2), ("n3", 3))
    // 如果在一个map中 key是相通的 只会拿到最后写入的那个value
    val 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))
    //删除key
    map2.remove("")
    println(map2.get("zh"))  //Some(2)
    //是否包含key
    map2.contains("")
    //返回迭代器
    map2.keys
    //返回Set 都是Key
    println(map2.keySet)

    println(map2)

  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值