Image

ScalaList集合的使用方法

首页 / 新闻资讯 / 正文

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))   } 

Loading...