`

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学习笔记(全)

    ### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...

    scala学习笔记整理

    在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...

    scala学习资料

    4. 集合库:Scala的集合库设计精良,包含各种高效的数据结构,如List、Set、Map等。这些集合不仅支持传统的OOP操作,还提供了丰富的函数式API,如map、filter、fold等,方便进行数据处理。 5. 特性与模式匹配:...

    scala-learn:scala学习笔记

    本教程“scala-learn:scala学习笔记”旨在帮助初学者深入理解Scala的基础知识,同时也为有经验的程序员提供了一个复习和提升的平台。 1. **基础语法与数据类型** Scala的基础语法简洁而强大,包括变量声明(val和...

    scala学习笔记

    以上内容覆盖了 Scala 编程语言的核心知识点,从基本语法到高级特性,为初学者提供了一个全面的学习指南。Scala 是一门功能强大且灵活的语言,适合于构建大型的、复杂的软件系统。希望这些知识点能够帮助读者更好地...

    scala的操作笔记

    本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握Scala基础语法及编程技巧,能够独立完成简单的Spark程序...

    scala笔记:学习scala时的笔记

    - Scala的集合库是其强大之处,提供了一组高性能的集合实现,如List, Set, Map和ArrayBuffer。 - 支持惰性求值的集合,如Stream和View,能有效提高性能。 - 集合操作如`flatMap`, `map`, `filter`等是函数式编程...

    Scala-Tutorial:Scala语法学习笔记与程式码范例from 韩顺平老师教学

    Scala是一种多范式的编程语言,它融合了面向对象和函数式编程的概念,旨在提供一种简洁、类型安全且高性能的...通过学习,你可以熟练掌握Scala语言,应用于大数据处理、分布式计算以及构建高并发、高可用的应用系统。

    utility_Scala:Scala编程语言基本和函数式编程(fp)和Spark Scala基本演示| #SE

    -Scala学习注意事项 主要档案 适用于实用程序的Scala脚本 -Scala spark基本演示 Scala基本-变量,数据结构 -Scala基本数据结构: array, list, tuple ,应用function, lambda带有它们的function, lambda基本。 和...

    Scala_day01_scala_

    "Scala_day01_scala_" 的标题暗示了这是一份针对初学者的Scala学习资料,旨在帮助新接触者快速入门。下面,我们将深入探讨Scala的一些核心概念和特性。 首先,Scala的基础语法与Java类似,但它提供了更简洁的表达...

    快学Scala 第2版.zip

    这本书的中文完整版包含高清扫描和书签功能,使得读者可以轻松查找和学习相关内容,而且文字可选择复制,方便笔记和后续查阅。 Scala在大数据领域扮演着重要角色,主要归功于它与Apache Spark的紧密集成。Spark是一...

    scala-with-cats:scala with cats一书的笔记,习题

    Scala是一种强大的、面向对象的编程语言,它集成了函数式编程的特点,被广泛应用于大数据处理、分布式计算...通过学习,你可以掌握如何在Scala项目中有效地利用函数式编程的力量,编写出高效、可维护和类型安全的代码。

    scala_fp_coursera:https的演示

    **Scala FP Coursera课程:深入理解函数式编程** Scala是一种多范式编程语言,...在提供的`scala_fp_coursera-master`压缩包中,可能包含了课程的笔记、代码示例和练习,这些都是深入学习Scala函数式编程的宝贵资源。

    Scala笔记Markdown版本(至集合章节)

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于后端开发。本笔记涵盖了Scala的基础...通过学习,开发者将能够掌握Scala的核心特性和编程技巧,从而更好地利用Scala进行后端开发。

    functional-programming-scala:在Coursera上的Scala专业化中的函数式编程工作已完成

    **标题与描述解析** ...综上所述,这个压缩包文件可能包含了学习者在Coursera上完成Scala函数式编程课程时积累的所有材料,包括代码示例、笔记、项目文件等,这些都是进一步学习和复习函数式编程概念的重要资源。

    scala_learn

    在"scala_learn-master"这个目录下,你可能会找到一系列的Scala教程文件,如`.scala`源代码文件、笔记文档、练习案例等,通过这些资源可以深入学习并实践上述知识点。此外,可能还会有对特定话题如并发、网络编程或...

    spark演示文档

    5. **集合类**:Scala提供了丰富的集合类,如`List`、`Array`和`Tuple`等。例如: ```scala val list = List(1, 2, 3) val array = Array(1, 2, 3) val tuple = ("a", 1) tuple._1 ``` 6. **高阶函数**:...

    scala-notes

    "scala-notes"可能是一个关于Scala编程的学习笔记或者教程集合,而"scala-notes-master"可能代表这是该资料的主目录或者最新版本。 在Scala中,你将学习到以下关键概念: 1. **类型系统**:Scala有强大的静态类型...

    DALC_Scala

    2. **集合库**:Scala 的集合库非常强大,提供了丰富的数据结构(如List、Set、Map)和操作,这对于数据处理至关重要。理解如何高效地使用这些集合对于编写高效的代码至关重要。 3. **Apache Spark**:Scala 通常与...

    Spark学习笔记之Spark SQL的具体使用

    Spark SQL学习笔记 Spark SQL是Apache Spark平台下的一个模块,提供了一个编程抽象叫做DataFrame,并且作为分布式SQL查询引擎的作用。Spark SQL是Spark平台下的一个重要组件,主要用于处理结构化数据。 Spark SQL...

Global site tag (gtag.js) - Google Analytics