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