scala 中List的简单使用

/**
  * scala 中List的使用
  *
  */

object ListUse {

  def main(args: Array[String]): Unit = {

    def decorator(l:List[Int] , prefix:String){
      if(l != Nil) {
        println(prefix + l.head)
        decorator(l.tail , prefix)
      }
    }

    // List 是不可变的列表
    val list = List(1,2,3,4,5,6,7)
    decorator(list, "list=")

    // LinkedList 是可变列表
    // 使用elem引用头部,使用next引用尾部
    val ll = scala.collection.mutable.LinkedList(1,2,3,4,5)
    println(ll.elem)
    println(ll.next) // 尾部所有的

    val ll2 = scala.collection.mutable.LinkedList(1,2,3,4,5)
    var currentList = ll2
    while (currentList != Nil){
      currentList.elem = currentList.elem * 2
      currentList = currentList.next
    }
    println(ll2) // LinkedList(2, 4, 6, 8, 10)
    // 改变的还是ll2

  }

}

  

原文地址:https://www.cnblogs.com/yxj0728/p/9281722.html

时间: 2024-08-01 19:37:13

scala 中List的简单使用的相关文章

scala中的闭包简单使用

object Closure { /** * scala中的闭包 * 函数在变量不处于其有效作用域内,还能够对变量进行访问 * * @param args */ def main(args: Array[String]): Unit = { def getHelloFunc(msg:String) = (name:String) => println(msg + "," + name) val sayHello = getHelloFunc("hello")

(转)Scala中协变(+)、逆变(-)、上界(<:)、下界(>:)简单介绍

看源码的时候看到: trait ExtensionId[T <: Extension] { 没见过这个符号啊<: Scala上界(<:)和下界(>:) 1) U >: T 这是类型下界的定义,也就是U必须是类型T的父类(或本身,自己也可以认为是自己的父类). 2) S <: T 这是类型上界的定义,也就是S必须是类型T的子类(或本身,自己也可以认为是自己的子类). 然后scala中的泛型符号是[T],而不是Java中的<T>. 对于一个带类型参数的类型,比如

scala学习手记2 - scala中的循环

先来看一段Java中的循环: for (int i = 1; i < 4; i++) { System.out.print(i + ","); } 毫无疑问,scala可以让这个循环更加简洁.根据上一节中的内容,没有必要显示指定变量i的类型,我们甚至不需要声明这个变量.其次输出的语句也可以更加简洁一些,在scala中可以直接使用println()这个方法输出字符串.最后scala的循环结构也是非常的轻量级.好了,可以看一下代码了: for (i <- 1 to 3) { p

scala入门教程:scala中的面向对象定义类,构造函数,继承

我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面一行代码就是一个scala类的定义: 首先是关键字class 其后是类名 Point 类名之后的括号中是构造函数的参数列表,这里相当于定义了对象的两个常量,其名称分别为x,y,类型都是Int 上面的类和下面的类是一致的,不过更精简了. class Point (xArg:Int, yArg:Int)

scala中java并发编程

Runnable/Callable 线程(Thread) Executors/ExecutorService Future 线程安全问题 示例:搜索引擎 解决方案 Runnable/Callable Runnable只有一个没有返回值的方法 1 2 3 trait Runnable {   def run(): Unit } Callable的方法和run类似,只不过它有一个返回值 1 2 3 trait Callable[V] {   def call(): V } 线程 Scala的并发是建

第26讲: Scala中的模式匹配入门实战详解

在scala中使用match表达式进行模式匹配,和其他语言中的switch语句的功能类型.但是match的功能更强大 我们先看一个简单的例子 object HelloPatternMatch {   def main(args: Array[String]): Unit = {     var data : Int = 1          data match {       case 1 => println("one")       case 2 => println

转载:理解scala中的Symbol

相信很多人和我一样,在刚接触Scala时,会觉得Symbol类型很奇怪,既然Scala中字符串都是不可变的,那么Symbol类型到底有什么作用呢? 简单来说,相比较于String类型,Symbol类型有两个比较明显的特点:节省内存和快速比较.在进入正题之前,让我们先来了解一下Java中String的intern()方法. 一.String的intern方法介绍 Oracle的开发文档上讲解的很详细:String类内部维护一个字符串池(strings pool),当调用String的intern(

深入理解Scala中的类型系统

核心内容: 1.Scala中定义类型的两种方式 2.Scala中的路径依赖 3.Scala中的自身类型以及自身类型的限定 4.Scala中的依赖注入 5.Scala中的链式风格调用--Type机制的用法 6.Scala中的复合数据类型 7.Scala中的抽象类型 8.Scala中的类型参数 9.Scala中的类型约束 10.Scala中的型变.逆变.协变 11.Scala中的结构类型 1.Scala中定义类型的两种方式 在Scala当中可以用以下两种方式定义类型: ①定义类.特质或对象 ②直接用

王家林亲授《DT大数据梦工厂》第84讲:Scala中List和ListBuffer设计实现思考

我一直觉得Scala里的List设计的很诡异,今天阅读了王家林老师的 <第84讲:Scala中List和ListBuffer设计实现思考 >, 然后我就豁然开朗了. Scala的List是immutable的,因此将其声明为var, 有了这个隐式转换,操作ResultSet就变简单了. =============================================================== 王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经