文档章节

scala基础篇-数组和映射

R
 RogerIs谭纶
发布于 2015/02/22 01:31
字数 387
阅读 146
收藏 4

####定长数组

val n = new Array[Int](10) //初始化
val s = new Array[String](10) //初始化
val a = Array("hello", "world") //Array[String]
val b = Array(1,2) //Array[Int]
val c = Array(1,2,"a","b") //Array[Any]

####变长数组

import scala.collection.mutable.ArrayBuffer
val b = new ArrayBuffer[Int]()
b += 1
b += (2,3)
b ++= Array(4,5)

经常我们需要一个数组Array,但是初期不知道装多少元素,这种情况下,可以先构造ArrayBuffer,然后调用toArray方法。 ####遍历数组或数组缓冲

for(i <- 0 until b.length)
    println(i)
for(i <- 0 until 5) #不含5
    println(i)
for(i<- 0 to 4)#包含4
    println(i)

以上三个循环达到的效果是一样的。 ####映射 一个经典的程序员名言,“如果只能有一种数据结构,那就用哈希表吧。” Scala的哈希表,即映射。

val scores0 = new scala.collection.mutable.HashMap[String, Int] //初始化空的映射
val scores1 = Map("Alice" -> 10, "Bob" -> 20, "Cindy" -> 30) //不可变的映射集合
val scores2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 20) //可变的映射集合

scala>scores1 += ("John" -> 40)
scala>error: value += is not a member of scala.collection.immutable.Map[String,Int]
scala>scores2 += ("John" -> 40)

注意:Map是不可变集合对象,scores1是不可变的变量,作用是不一样的。

scores1("Bob") 
socres1.getOrElse("Bob", 0)
scores1.contains("Bob")
for((k,v) <- scores1) {
  println("k:"+k)
  println("v:"+v)
}
for(v <- socres1) println(v)
for(v <- socres1.values) println(v)

####元组 元组不同于映射(Map),它是在不使用类的前提下,将多个元素组合成一组(一个逻辑集合)。

val t= (1, "a")

元组可以很好地与模式匹配相结合(?待体会)

© 著作权归作者所有

共有 人打赏支持
R
粉丝 2
博文 7
码字总数 2584
作品 0
西安
高级程序员
Scala基础入门-3

学习Scala——映射和元组 映射和和元组,也就是Maps和Tuples。Map这东西应该都挺明白的,就是键值对的集合。而元组,tuple,这东西并不是每个语言都有(Python中是有的,不过当时学的时候没有...

wei-spring
2015/11/11
0
0
Scala笔记整理(二):Scala数据结构—数组、map与tuple

[TOC] 数组 定长数组 如果你需要一个长度不变的数组,可以用Scala中的Array。例如: 在JVM中,Scala的Array以Java数组方式实现。示例中的数组在JVM中的类型为java.lang.String[]。Int、Doubl...

xpleaf
04/18
0
0
Scala简单编程

1. Scala简单概述 Scala是多范式编程语言,其设计的初衷是要集成面向对象编程和函数式编程以及各种特性. 需要说明的一点是: Scala是基于java平台(JVM) ,并兼容现有的Java程序 下面是Scala官方...

得失与否
01/01
0
0
第四章 映射和元组

1、设置映射,其中包含你想要的一些装备,以及他们的价格。然后构建另外一个映射,采用同一组键,但在价格上打9折 2、编写一段程序,从文件中读取单词。用一个可变映射来清点每一个单词出现的...

小萝卜_
2016/06/14
7
0
10个让朋友对你刮目相看的CoffeeScript单行代码绝技

或许你已经看过了Marcus Kazmierczak的这篇在HN上颇受欢迎的“10个让朋友对你刮目相看的Scala单行代码绝技”了, 尽管我对Scala并不了解(Java也是),但是这看起来还真不错,于是我也有点手...

justjavac
2012/07/23
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring 事件

ContextRefreshedEvent Event raised when an {@code ApplicationContext} gets initialized or refreshed. ContextClosedEvent Event raised when an {@code ApplicationContext} gets clos......

Canaan_
30分钟前
1
0
leetcode两数之和

leetcode中求两数之和解决方法 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 给定 nums = [2, 7, 11, ...

lar555
47分钟前
1
0
js实现限制网页内容复制

转载 在我们做的网页发到网上后,如果访客看到比较喜欢的内容,只要复制就可以变为自己的,自己辛辛苦苦弄半天还不及人家的一下复制,有时为了只让访客看到,而不能让它们复制内容,就用Jav...

lc_comeon
51分钟前
1
0
jenkins将spring boot项目发布到阿里云镜像中

1、spring boot项目 1.1 pom.xml配置 <artifactId>xxx-docker</artifactId><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.......

xixingzhe
今天
0
0
qsv格式可以在电视上播放吗

  大家都知道qsv格式是爱奇艺的独家缓存格式,是加密的,一般的播放器是无法播放的,只能在爱奇艺播放器上播放,如果想要在电视上播放,就必须要安装爱奇艺播放器,比较麻烦。其实还有一种...

萤火的萤火
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部