Scala集合与Spark解析

  • 在scala的集合体系中, Iterable时共同的Trait., Iterable要求继承者实现一些共同的方法, 例如对元素的遍历等.
  • Array时一个非常基础的数据结构, 不属于Scala集合体系中.
  • Scala的集合体系中分为可变集合和不可变集合, 分别在scala.collection.mutable和scala.collection.immutable包中.

List是元素的列表集合,是不可变的:

  • 第一点:List中head是指第一个元素,tail是指剩下的元素构成的List集合;
  • 第二点:使用::这个操作符来把List和其它的元素进行组拼来构建新的List
  • 第三点:如果集合中没有元素的话,此时为Nil,例如说List中只有一个元素,那么head就是这个元素本身,tail操作就会返回Nil

scala类与对象

  • 如果声明为private, 不可通过(new HiScala).name 进行访问
class HiScala {
 private var name = "spark"
 def sayName(){println(name)}
 def getName = name
}
  • 如果不声明private, 可以通过上述方式进行访问, 不过其实scala自动创建了getName, setName方法, 并且使用getName来获得name值.
class HiScala {
 var name = "spark"
 def sayName(){println(name)}
 def getName = name
}
val scal = new HiScala
scal.name
  • 也可以手动复写方法, 达到对setter,getter控制的目的
 object TestScala {
  def main(args: Array[String]): Unit = {
    val p = new Person2
    p.name = "123";
  }
}


class Person2{
  private var myName = "flink"
  def name = this.myName

  def name_=(newName : String): Unit = {
    myName = newName
    println("newName " + newName)
  }
}
  • private[this] 只能够在当前类内部访问, 并且也只能够在当前对象中访问
class Person2 {
  private[this] var myName = "flink"

  private def name = this.myName

  def name_=(newName: String): Unit = {
    myName = newName
    println("newName " + newName)
  }

   def talk(person2: Person2): Unit = {
    println("talk:" + person2.myName)
  }
}

此时person2.myName会报错.

  • 构造对象的时候, 主构造器必须被调用到. 次构造器必须也调用主构造器.
class Person3 {
  private var name = "flink"
  private var age = 1

  def this (name: String, age: Int) {
    this ()
    this.name = name
    this.age = age
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值