Scala的集合


集合

1.集合基本常用方法

object Scala_Collection {
  def main(args: Array[String]): Unit = {
    //集合常用的方法
    val buffer = ArrayBuffer(1,2,3,4)
    //长度
    println(buffer.length)//length=size
    //反转
    println(buffer.reverse)
    //取一部分数据(取前三条)
    println(buffer.take(3))
    //获取数据后三条
    println(buffer.takeRight(3))
    //删除数据
    println(buffer.drop(1))
    println(buffer.dropRight(1))

    //头
    println(buffer.head)
    //尾巴
    println(buffer.tail)//集合中都是非头是尾(2,3,4)
    //最后一个
    println(buffer.last)
    println(buffer.init)
  }
}

2.不同类型的集合

2.1不可变List

object ListTest {
  def main(args: Array[String]): Unit = {
    val list = List(1, 2, 3, 4, 5)
    //todo 1.在数组的后面添加一个数,产生新集合
    val list1: List[Int] = list :+ 5

    //todo 2.空集合
    Nil//List()

    //todo 3 :: 相当于从右往左添加元素
    val list3: List[Int] = 1 :: 2 :: 3 :: Nil
    //:::相当于添加元素,使用元素拆解开,添加入空集合
    val list4=1::2::3::list1:::Nil
    println(list4)
  }
}

2.2 可变集合

//todo 集合-Seq(List) 可变
val list: ListBuffer[Int] = ListBuffer(1, 2, 3, 4)
list.update(3,6)//ListBuffer(1, 2, 3, 6)
list.append(5)//ListBuffer(1, 2, 3, 6,5)//remove
println(list)

3.无序且不可能重复集合set

3.1 不可变set

val set = Set(1, 2, 2, 3, 3, 4, 5)
val set1: Set[Int] = set + 7//添加新元素形成新集合
val set2: Set[Int] = set - 5//减少元素
println(set2)

3.2 可变Set

val set = Set(1, 2, 2, 3, 3, 4, 5)
val set1: Set[Int] = set + 7//添加新元素形成新集合
val set2: Set[Int] = set - 5//减少元素
//可变set集合是使用包名进行区分
val set3: mutable.Set[Int] = mutable.Set(1, 2, 3, 4, 5, 6, 7)
//更新集合本身,重点是后面的false
set3.update(8,false)
println(set3)

4.Map存储无序的K-V

默认也是不可变的Map

val map = Map(
      ("a",1),("b",2),("c",3),
      ("a",4),("e",5),("c",5)
    )
println(map)
//scala中方法用于创建关联关系,形成键值对->
val map1 = mutable.Map("a"->1,"b"->2)
println(map1)

5.Option

def main(args: Array[String]): Unit = {
    val map1 = Map(
      ("a",1),("b",2),("c",3),
      ("a",4),("e",5),("c",5)
    )
    val option: Option[Int] = map1.get("a")
    //option选项,称为有值跟无值
    //Some:有值,None:无值
    //空指针异常
    println(option)
    val option1: Option[Int] = map1.get("f")
    println(option1)
//    option1.get,知道没值但是还是取值会报错
//    map1.get("d").getOrElse(0)
    println(map1.getOrElse("e", 0))
  }

文章作者: Jinxin Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jinxin Li !
  目录