Scala学习笔记<基本数据结构>

博主自从前两天学习了python的List、Tuple和Map之后,得到了一点小的启示:熟练应用这些数据结构,除了手底下敲一遍,别无它法。而数据结构往往是我们开始工作的起点。


本文的参考资料主要来自:
Scala课堂
First Step to Scala
Scala官方文档

概述

首先我们下文中基本上都会采用val关键字而不是var。这其中关系到了函数式编程的特征,但这里不会不多说。

List

人如其名,链表,元素不可更改
性能:prepend,access head or tail 都为O(1),其余为O(n)
空间: 操作基本上在连表上完成,所以为常数级别。
操作示例

// Make a list via the companion object factory
val days = List("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
// Make a list element-by-element
val when = "AM" :: "PM" :: List()
// Pattern match
//这个模式匹配看起来很有意思~可以拆分成两部分
days match {
  case firstDay :: otherDays =>
    println("The first day of the week is: " + firstDay)
  case List() =>
    println("There don't seem to be any week days.")
}

需要额外注意一下的是串联操作:

//::和:::是一个右操作符,所以结尾需要一个List()
//如果左侧是一个数字则使用::,否则:::
val a =List(1):::List(2,3,4):::5::List()

Set

set没有重复
有两种Set,分别是可改和不可改的。

这里写图片描述

我们着重看一看具体可变的(mutable)的函数


scala> import scala.collection.mutable.HashSet
import scala.collection.mutable.HashSet

scala> val s=new HashSet[String]
s: scala.collection.mutable.HashSet[String] = Set()

scala> s+="shit"
res49: s.type = Set(shit)

scala> s+="fuck"
res50: s.type = Set(fuck, shit)

scala> s.contains("shit")
res51: Boolean = true

scala> s-="fuck"
res52: s.type = Set(shit)

Maps

这里写图片描述

如图所示,也有两个版本。

scala> var m=new HashMap[String,String]
m: scala.collection.mutable.HashMap[String,String] = Map()

scala> m+="shit"->"greatful"
res67: scala.collection.mutable.HashMap[String,String] = Map(shit -> greatful)

scala> m("shit")
res68: String = greatful

scala> m-="shit"
res69: scala.collection.mutable.HashMap[String,String] = Map()

可以看到Set和Map中都有+=、-=的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值