Scala学习笔记——20170820

List集合中的各种方法

注意: List集合是不可变的,增、删、改只会返回一个新的集合

object ListDemo0819 {

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

        val list = List(1 to 20 by 2: _*) //后一个元素 = 前一个元素 + 2
        println("list->" + list)

        val list1 = list ++ List(21, 22) //合并集合
        println("list1->" + list1)

        val list2 = 22 +: 21 +: list // 向集合左边添加2个元素
        println("list2->" + list2)

        val list3 = list ::: List(21, 22) //  同 list ++ List(21, 22)
        println("list3->" + list3)

        val list4 = 22 :: 21 :: list // 同 22 +: 21 +: list
        println("list4->" + list4)

        val list5 = list.companion(4, 5) // TODO
        println("list5->" + list5)

        println(list.drop(5)) // 删除集合前5个元素

        println(list.dropWhile(_ < 7)) // 循环删除小于10的元素,遇到不满足的,马上跳出循环

        println(List("hello", "world").mapConserve(_.toUpperCase)) // 对集合所有元素操作,这里是转换成大写

        println(list.reverse) // 反转顺序

        println(list)
        println(list.slice(2, 6)) // 获取角标为2-5的元素

        println(list.span(_ < 6)) // 按元素大小 拆分集合
        println(list.splitAt(2)) // 按元素的位置 拆分集合

        println(list.stringPrefix) // 返回类型

        println(list.take(3)) // 获取前3个元素
        println(list.takeWhile(_ < 15)) // 获取小于15的元素,遇到不满足的,马上跳出循环
        println(list.takeRight(3)) // 获取右边3个元素

        println("hello world".toList) // 转换为List集合

        val list6 = List(1, 2, 4)
        println(list6./:(0)((x, y) => x + y + 1))

        println(list.addString(new StringBuilder("a"))) // 把集合转换成String并且以a开头

        println(list.apply(5)) //把集合前5个元素删除,然后返回当前的第一个元素

        println(list.collect { case i: Int => i + "b" }) //给每个元素添加一个String
        println(list.collectFirst { case i: Int => i + "b" }) //获取第一个

        println(list.take(3))
        println(list.take(3).companion(2).toList)

        println(list.contains(1)) //是否包含
        println(list.containsSlice(List(1, 3)))

        val array = new Array[Int](6)
        list.copyToArray(array)
        //list.copyToArray(array, 4)
        //list.copyToArray(array, 1, 3)
        println(array.toList)

        println(list.count(_ < 15)) // 获取集合中比15小的元素的个数

        println(list.diff(List(1, 5, 7))) // 集合A - 集合B

        println(List(12, 3, 2, 2, 12, 5).distinct) //去重

        println(list.endsWith(List(17, 19))) // 判断结尾

        println(list.equals(List(11))) // 判断2个集合是否相等

        println(list.contains(19)) // 判断是否包含19
        println(list.exists(_ < 5)) // 判断是否包含小于5的元素

        println(list.filter(_ % 3 == 0)) // 取出能整除3的数

        val list7 = List(List(1, 2), List(4, 7))
        println(list7.flatMap(_.toList)) // 合并所有元素为一个新集合

        println(list.fold(2)((x, y) => x + y)) // 求和 + 2

        list.foreach(println) // 遍历集合,打印

        println(list.groupBy(_ + "a"))

        println(list.map(_ + "a")) // 对所有元素进行操作

        println(list.mkString(",")) // 使用,将集合拆分成String
        println(list.mkString) // 直接转换成String

        println(list.patch(3, List(1, 2), 0))
        println(list.patch(3, List(1, 2), 2)) // 从角标为3的位置插入一堆元素List(0,0),去除其后面2位元素

        println(list.product) // 求积
        println(list.sum) //求和
        println(list.reduce(_ + _)) //求和
        println(list.reduce(_ * _)) //求积

        println(list)
        println(list.scan(1)(_ + _)) // 生成一个从1开始的集合,新集合第n个元素 = 上一个集合的第n-1个元素 + 新集合第n-1个元素

        list.sliding(4) // 四个一组,生成Iterator
        list.sliding(4).foreach(println) // 打印Iterator的内容
        list.sliding(3, 5).foreach(println) // 3个一组,从原集合的第5个元素开始

        println(list.sorted) // 升序
        println(list.sortWith(_ > _)) // 降序

        println(list.union(List(99, 100))) // 取并集

        println(list.zip(list.reverse)) //合并集合,角标相同的组成一个新的集合

        println(list.zipWithIndex) // 元素+角标 组成新集合

        val list8 = list.unzip(x => (x, x + "a")) //转为2个集合(原, 新)
        println(list8)

        println(list.view(0,3).force) //获取角标为0到3的元素(不包括3)

        println(list)
        list.updated(2, 100).foreach(println) //修改角标为2的元素为100
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值