scala学习笔记(三):List

阅读更多

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

 

你可能感兴趣的:(scala学习笔记(三):List)