列表List是一种有限的不可变序列式,所以所有的操作都会产生新的List
1、增加修改
/**
* 连续多个数进行右操作 Nil是空List 至于为什么要加Nil是因为如果不加::就是Int的方法
* 但是Int并没有::方法,所以会编译错误
* Nil或者List() 都可以表示空List
*/
val list = 1 :: 2 :: 3 :: 4 :: Nil
val list1 = List("hello","scala","spark","hadoop")
//增加
5 :: list
//修改
//list(0) = -1 error: value update is not a member of List[Int]
//resXX: List[Int] = List(-1, 2, 3, 4)
list.updated(0,-1)
2、遍历
//遍历
list.foreach(println)
list.foreach((i:Int)=>println("Value is "+ i))
//返回一每个元素都+1的新的列表 resXX: List[Int] = List(2, 3, 4, 5)
val res = list.map(x => x+ 1)
println(res.mkString(";"))
//返回列表中元素反转后新的列表 resXX: List[Int] = List(4, 3, 2, 1)
list.reverse
//按照字母的先后顺序进行排序 resXX: List[String] = List(hadoop, hello, scala, spark)
list1.sorted
3、List的其他常用方法
//此方法返回的列表中的第一个元素 resXX: String = hello
println(list1.head + ">>返回列表中的第一个元素hello")
//此方法返回的列表中的最后一个元素 resXX: String = hadoop
println(list1.last + ">>返回列表中最后一个元素hadoop")
//此方法返回的列表中除最后一个元素外的其他元素组成的列表 resXX: List[String] = List(hello, scala, spark)
println(list1.init + ">>返回除最后一个元素外的所有元素组成的列表")
//此方法返回一个由列表元素组成的Iterator对象 resXX: Iterator[List[String]] = non-empty iterator
println(list1.inits + ">>把列表生成一个Iterator对象")
//此方法返回的列表中除第一个元素外外的其他元素组成的列表 resXX: List[String] = List(scala, spark, hadoop)
println(list1.tail + ">>返回列表中除第一个元素外的所有元素组成的列表")
println(list1.isEmpty + ">>列表是否是空")
//判断列表中元素大于2个元素个数 resXX: Int = 2
val num = list.count((s:Int) => s > 2)
println("num="+num)
//删除列表前面的2个元素 resXX: List[Int] = List(3, 4)
list.drop(2)
//删除列表后面的1个元素 resXX: List[Int] = List(1,2,3)
list.dropRight(1)
//按照条件删除元素并把未删除的组成新的列表 resXX: List[Int] = List(2, 3, 4)
list.dropWhile(i => i < 2)
//List中是否存在大于1的元素 后面的表达式只要是boolean即可 resXX: Boolean = true
list.exists((s:Int) => s > 1)
//List中是否存在3这个元素 resXX: Boolean = true
list.contains(3)
//获取元素中第3个元素 从0开始 resXX: Int = 4
list(3)
//filter是把元素中大于2的元素取出来生成一个新的列表返回 resXX: List[Int] = List(3, 4)
list.filter((s:Int) => s >2)
//判断列表中所有元素是否都大于等于1 resXX: Boolean = true
list.forall((s:Int) => s>=1)
//获取列表前面3个元素组成新的列表 resXX: List[Int] = List(1, 2, 3)
list.take(3)
//返回列表元素使用,分割组成的字符串 resXX: String = 1,2,3,4
list.mkString(",")
4、2个集合的拼接
val list2 = List("Hive")
//resXX: List[String] = List(hello, scala, spark, hadoop, Hive)
list1 ::: list2
list1 ++ list2
//resXX: List[String] = List(Hive, hello, scala, spark, hadoop)
list2 ::: list1
list2 ++ list1
//resXX: List[String] = List(java, hello, scala, spark, hadoop)
"java" +: list1 //建议使用这种方式编写
list1.+:("java")
//resXX: List[String] = List(hello, scala, spark, hadoop, java)
list1 :+ "java" //建议使用这种方式编写
list1.:+("java")