Scala-集合的基本用法


object ListDmeo {
  def main(args: Array[String]): Unit = {
    val arr = Array(1,5,8,7,3,4,2,9,10)

    val max = arr.max
    val min = arr.min
    val sum = arr.sum
    val avg = sum.toDouble / arr.length
//    println(avg)

    //从数组左边累加
    /**
     * 1+5 =6
     * 6+8=14
     */
    val i = arr.reduce((x, y) => x + y)
    val i2 = arr.reduceLeft(_ + _)
    val i3 = arr.reduceRight(_+_)

    /**
     * fold方法 ()里面的是初始值
     * 在累加之前加上初始值
     * 100+1 = 101
     * 101+5 =106
     * .....
     */
    val f1 = arr.fold(100)(_ + _)
    val f2 = arr.foldLeft(100)(_ + _)
    val f3 = arr.foldRight(100)(_ + _)

    //将数组中的每个元素都乘以10后生成一个新的集合
    val map: Array[Int] = arr.map(x => x * 10)

    // 过滤 将数组中的偶数拿出来 生成一个新的数组
    val filt: Array[Int] = arr.filter(_ % 2 == 0)

    //将集合排序后生成一个新的数组
    /**
     * 只能升序
     * ArrayBuffer(1, 2, 3, 4, 5, 7, 8, 9, 10)
     */
    val sorted: Array[Int] = arr.sorted
    /**
     * 使用sortBy的时候升序不可以用 _
     * (1, 2, 3, 4, 5, 7, 8, 9, 10)
     */
    val s2: Array[Int] = arr.sortBy(x => x)
    //降序的时候可以使用 _
    //(10, 9, 8, 7, 5, 4, 3, 2, 1)
    val s3 = arr.sortBy(-_)
    /**
     * 将数组中的元素转换成String类型进行排序 返回的仍是Int类型 排序以字典顺序排序
     * ArrayBuffer(1, 10, 2, 3, 4, 5, 7, 8, 9)
     */
    val s4: Array[Int] = arr.sortBy(x => x.toString)
    /**
     * 按照降序的形式排序
     * ArrayBuffer(10, 9, 8, 7, 5, 4, 3, 2, 1)
     */
    val s5: Array[Int] = arr.sortWith((x, y) => x > y)
    /**
     * 按照升序的形式排序
     * ArrayBuffer(1, 2, 3, 4, 5, 7, 8, 9, 10)
     */
    val s6: Array[Int] = arr.sortWith((x, y) => x < y)

    //将数组中的元素反转
    //ArrayBuffer(10, 9, 2, 4, 3, 7, 8, 5, 1)
    val re = arr.reverse

    /**
     * 将数组的元素3个为一组 返回类型是 Iterator[Array[Int]]  是一个迭代器
     */
    val iterator: Iterator[Array[Int]] = arr.grouped(3)
    /**
     * 将迭代器 转换成List集合
     * ArrayBuffer(1, 5, 8)
     * ArrayBuffer(7, 3, 4)
     * ArrayBuffer(2, 9, 10)
     */
    val ls: List[Array[Int]] = iterator.toList
//    for (i <- ls) println(i.toBuffer)

    /**
     * 将多个数组 压扁 成一个数组
     * List(1, 5, 8, 7, 3, 4, 2, 9, 10)
     */
    val flatten: List[Int] = ls.flatten

    val arr2 = Array("a b c","d e f","g h")
    //切割数组 ArrayBuffer(a, b, c, d, e, f, g, h)
    val fm: Array[String] = arr2.flatMap(_.split(" "))



    val lst1 = List(List(1,2,3),List(3,4,5),List(2),List(0))

    /**
     * 聚合
     * ()里面的是初始值  _+_.sum 累加每个几个的和
     * _+_ 以后为了多线程执行任务
     * 20
     */

    val result: Int = lst1.aggregate(0)(_ + _.sum, _ + _)

    val l2 = List(5,6,7,4)
    val l3 = List(1,2,3,4)

    /**
     * 求并集
     * val un2: List[Any] = ls union l3
     * List(5, 6, 7, 4, 1, 2, 3, 4)
     */
    val un: List[Int] = l2.union(l3)

    /**
     * 求交集
     * val ints2 = l2 intersect l3
     * List(4)
     */
    val ints: List[Int] = l2.intersect(l3)

    /**
     * 求差值
     * val diff2: List[Int] = l2diff l3
     * List(5, 6, 7)
     */
    val diff1: List[Int] = l2.diff(l3)
 

  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值