列表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")