Scala: Range & 实现集合中相邻元素间的差值

简介: Scala中Range可以看成是List的特例,Range的包含的元素类型是Int, 本文介绍如何创建Range。代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找。 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a,b,c,d)中(b-a,c-

Range

欢迎转载,转载请注明出处,徽沪一郎。

概要

Scala中Range可以看成是List的特例,Range的包含的元素类型是Int, 本文介绍如何创建Range

Range创建

方法一:

val r1 = new Range(1,10,1)

方法二:

val r1 = 1 to 10

需要注意的是,默认步长是1

可以使用by来改变步长

val r1 = 1 to 10 by 2

to和until的区别,to是将结束的元素也算在内是<=,而until是不包括结束元素是<

应用

最容易想到的是与for相结合。

for ( i <- 1 to 10 by 2 ) yield i*3

在实际项目中,可能需要将某一范围内的值放在一个线程中处理,那么可以使用range来进行控制。

用Scala实现集合中相邻元素间的差值

欢迎转载,转载请注明出处,徽沪一郎。

概要

代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找。

今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a,b,c,d)中(b-a,c-b,d-c)

解法

val l1 = 1 to 10 toList
val l2 = l1.tail
l1.zip(l2).map(p=>(p._2 - p._1)

上述代码即可求出两两差值。代码含义稍作解释:

  1. tail表示一个集合中除首元素外的剩余元素,也是一个集合。
  2. zip将两个集合组成一个数值对集合,比如原来有两个集合分别是(a,b,c,d), (1,2,3,4),使用zip之后,形成((a,1),(b,2),(c,3),(d,4))
  3. map操作中的p._1和p._1表示tuple中的第一个元素和第二个元素

衍生

既然讲了首元素和剩余元素,肯定要讲到其对立面。分别引述如下

  • head|tail  head表示头元素,tail表示除head之外的剩余元素集合
  • init|last    last表示尾元素, init表示除尾元素之外的剩余元素集合
目录
相关文章
|
5月前
|
安全 Java Scala
Scala集合【上】
Scala集合【上】
|
11月前
|
Scala
162 Scala 集合
162 Scala 集合
41 0
|
5月前
|
分布式计算 Scala Spark
Scala【集合常用方法和函数操作(下)】
Scala【集合常用方法和函数操作(下)】
|
5月前
|
分布式计算 Scala Spark
Scala 【集合常用方法和函数操作-上】
Scala 【集合常用方法和函数操作-上】
|
4月前
|
Scala
scala-模式匹配(字符串、数组、元组、集合、类、偏函数)
scala-模式匹配(字符串、数组、元组、集合、类、偏函数)
24 0
|
5月前
|
Scala 容器
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
104 2
|
5月前
|
Scala
Scala综合练习_基于以下List集合实现词频统计
Scala综合练习_基于以下List集合实现词频统计
45 0
|
Scala 容器
Scala集合和遍历 2
Scala集合和遍历
70 0
|
Scala 索引
Scala集合和遍历 1
Scala集合和遍历
66 0
|
Java 大数据 Scala
大数据开发基础的编程语言的Scala的字符串/数组/集合
Scala是一种基于JVM的编程语言,它支持丰富的字符串、数组和集合操作。本文将介绍Scala中这些数据类型的概念和用法,帮助开发者更好地理解和应用这门语言。
76 0