集合中的值不能改变 会报错 而数组可以改变 因为集合是常量
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)) }