scala之集合

一、数组

1、定长数组

object ArrayApp {
  def main(args: Array[String]): Unit = {
    val a = new Array[String](5)
    println(a.length)
    a(1) = "hello"

    // 调用的是 apply 方法
    val b = Array("hadoop", "spark", "scala")
    b(0) = "Python"

    val c = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    c.sum
    c.min
    c.max

    println(c.mkString(","))
    println(c.mkString(" and "))
    println(c.mkString("<", ",", ">"))

  }
}

2、可变数组

object ArrayApp {
  def main(args: Array[String]): Unit = {
       
    val d = ArrayBuffer[Int]()
    println(d.length)
    
    d += 1
    d += 2
    d += (3, 4, 5)
    d ++= Array(6, 7, 8)
    
    // 在第 0 位置添加元素 0
    d.insert(0, 0)
    // 在位置7 删除 1 个元素
    d.remove(7, 1)
    // 在末尾删除 2 个元素
    d.trimEnd(2)
    
    for (i <- 0 until d.length) {
      println(d(i))
    }
    
    // 这种更常用
    for (i <- c) {
      println(i)
    }
    
    // 反向
    for (i <- (0 until d.length).reverse) {
      println(d(i))
    }
    
    // 变成不可变数组
    println(d.toArray)
  }
}
二、List

1、定长List

object ListApp {
  def main(args: Array[String]): Unit = {

    val l = List(1, 2, 3, 4, 5)
    println(l.head)
    // 考点:剩下的所有元素是一个 tail,不是最后一个叫 tail
    println(l.tail)

    // 1 表示 head,Nil 表示 tail,使用 :: 将两者拼起来当成一个新的 List
    val l2 = 1 :: Nil

    // 2 是 head,l2 是 tail,别弄反了
    val l3 = 2 :: l2

  }
}

2、变长List

object ListApp {
  def main(args: Array[String]): Unit = {

    val l5 = ListBuffer[Int]()

    l5 += 2
    l5 += (3, 4, 5)

    l5.tail
    l5.tail.head

    l5 ++= List(6, 7, 8, 9)
    l5 -= 2
    // 1 没有就不减了
    l5 -= (1, 4)
    l5 --= List(5, 6, 7, 8)


    // 转成不可变 List
    l5.toList
    // 转成不可变数组
    l5.toArray

  }
}

3、自己实现求和

object ListApp {
  def main(args: Array[String]): Unit = {
    println(sum())
    println(sum(1, 2, 3, 4))
  }
  
  // 自己实现 sum
  def sum(nums: Int*): Int = {
    if (nums.length == 0) {
      0
    } else {
      // :_*,固定写法。能够将 seq 转换成可变参数
      nums.head + sum(nums.tail:_*)
    }
  }

}

4、Set
Set 无序,不可重复。用法参考List 即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值