ScalaList集合的使用方法

2023年6月3日13:09:33

List集合

集合中的值不能改变 会报错 而数组可以改变 因为集合是常量

1.创建List集合

val l1 = List("a","b","c")

2.打印下标集合数据

println(l1(0))

3.循环集合数据

    for (a <- l1){
      println(a)
    }

4.Nil方式创建集合

//Nil:空
    val l2 = "a" :: ("b" :: Nil)
    //论方便的话 还真不如直接创建一个List集合 最后Nil只是作为一个空列表
    val l3 = 1 :: (2 :: (3 :: Nil))

5.判断是否为空,不为空返回false

    println(l2.isEmpty)

集合符号比较多 方法比较多

6.连接符

    println(l1 ::: l3) //连接列表
    println("d"+:l1)//顶部添加元素
    println("c"+l1)
    println(l1 :+"c")//列表后添加元素

7.将集合数据转换成字符串

    val s1 = new StringBuilder()
    println(l1.addString(s1))

8.检测是否包含指定元素

println(l1.contains("b"))

9.集合数据去重

println(l1.distinct)//去除重复数据

10.exists 判断是否包含某个值

println(l1.exists(
      //列表中每一个值取出 作为实参调用下面的匿名函数
      //x =参数 匿名函数
      x =>{
        //方法主体
        println("很多操作")
        //方法返回值
        x =="c" //返回布尔类型
      }
    ))

11.过滤集合 filter

println(l3.filter(
      x =>
        //因为是匿名函数 这里可以做其他处理
        //y也可以判断等于某一个元素 某一个对象等等
        x >2//筛选数据 筛选数据大于2的
        //x.length > 2//返回true ,则存入另外一个集合存入
    ))

12.forall 检测所有元素,如果都符合条件,则返回true

    println(l1.forall(
      x =>{
        println("比大小"+x.length)
        x.length >0//有没有大于2
      }
    ))

13.foreache循环 也可用匿名函数的方式循环

    l1.foreach(println(_))
    l1.foreach(
      a => {//也可加匿名函数
        println("遍历的"+a)
      }
    )

14.获取列表第一个元素 类似exists方法 返回的是下表 没有返回-1

println(l1.indexOf("a"))

15.返回列表长度

println(l1.length)

16.map 遍历集合,执行函数,并把所有的返回值组成新的集合

println(l1.map(//作用和foreach一样 只不过把每一个都处理
      x =>
        x+"2" //进行运算 并把结果放在新的集合中
    ))

17.max min sum返回集合最大值 最小值 求和字符串不能求和 按照字符串a的字节码是96**

    println(l1.max)
    println(l1.min)
    println(l3.sum)

18.一系列to开头方法 截取这个列的前几位

    println(l1.take(2))//截取前两位
    l1.take(2).foreach(println(_))//截取后循环打印

19.转换数组

println(l1.toArray)

20.转换集合

val a = Array(1,2,3)
    println(a.toList)

综合应用

  def d2()={
    val data = List(
      //记录的id 用户id 性别 0:男 1:女
      "1,1001,0",
      "2,1002,1",
      "3,1003,0"
    )
    //女性数量
    //一条一条去处理
    val result = data.map(
      line =>  line.split(",")(2)//split 以符号间隔隔开转换为数组
    )
    //result.take(2).foreach(println(_))//截取前两位 只要女性男性的值
    val sexNum = result.filter(
      x => x == "0"
    ).length
    println("女性数量为"+sexNum)
    println("女性用户所占百分比"+(sexNum.toDouble/result.length.toDouble))
  }

  • 作者:九八年的尾巴
  • 原文链接:https://blog.csdn.net/q736317048/article/details/107717702
    更新时间:2023年6月3日13:09:33 ,共 1681 字。