http://blog.csdn.net/pipisorry/article/details/52902549

Scala Collection

Scala 集合分为可变的和不可变的集合。

可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。

而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。

集合类型的应用

1     Scala List(列表)
List的特征是其元素以线性方式存储,集合中可以存放重复对象。
2     Scala Set(集合)
Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。
3     Scala Map(映射)
Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。
4     Scala 元组
元组是不同类型的值的集合
5     Scala Option
Option[T] 表示有可能包含值的容器,也可能不包含值。
6     Scala Iterator(迭代器)
迭代器不是一个容器,更确切的说是逐一访问容器内元素的方法。

实例

以下代码判断,演示了所有以上集合类型的定义实例:

// 定义整型 List
val x = List(1,2,3,4)// 定义 Set
var x = Set(1,3,5,7)// 定义 Map
val x = Map("one" -> 1, "two" -> 2, "three" -> 3)// 创建两个不同类型元素的元组
val x = (10, "Runoob")// 定义 Option
val x:Option[Int] = Some(5)

皮皮blog

Scala Iterator(迭代器)

Scala Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法。

迭代器 it 的两个基本操作是 nexthasNext

调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

调用 it.hasNext() 用于检测集合中是否还有元素。

让迭代器 it 逐个返回所有元素最简单的方法是使用 while 循环:

object Test {def main(args: Array[String]) {val it = Iterator("Baidu", "Google", "Runoob", "Taobao")while (it.hasNext){println(it.next())}}
}

Scala Iterator 常用方法

序号 方法及描述
1

def hasNext: Boolean

如果还有可返回的元素,返回true。

2

def next(): A

返回迭代器的下一个元素,并且更新迭代器的状态

3

def ++(that: => Iterator[A]): Iterator[A]

合并两个迭代器

4

def ++[B >: A](that :=> GenTraversableOnce[B]): Iterator[B]

合并两个迭代器

5

def addString(b: StringBuilder): StringBuilder

添加一个字符串到 StringBuilder b

6

def addString(b: StringBuilder, sep: String): StringBuilder

添加一个字符串到 StringBuilder b,并指定分隔符

7

def buffered: BufferedIterator[A]

迭代器都转换成 BufferedIterator

8

def contains(elem: Any): Boolean

检测迭代器中是否包含指定元素

9

def copyToArray(xs: Array[A], start: Int, len: Int): Unit

将迭代器中选定的值传给数组

10

def count(p: (A) => Boolean): Int

返回迭代器元素中满足条件p的元素总数。

11

def drop(n: Int): Iterator[A]

返回丢弃前n个元素新集合

12

def dropWhile(p: (A) => Boolean): Iterator[A]

从左向右丢弃元素,直到条件p不成立

13

def duplicate: (Iterator[A], Iterator[A])

生成两个能分别返回迭代器所有元素的迭代器。

14

def exists(p: (A) => Boolean): Boolean

返回一个布尔值,指明迭代器元素中是否存在满足p的元素。

15

def filter(p: (A) => Boolean): Iterator[A]

返回一个新迭代器 ,指向迭代器元素中所有满足条件p的元素。

16

def filterNot(p: (A) => Boolean): Iterator[A]

返回一个迭代器,指向迭代器元素中不满足条件p的元素。

17

def find(p: (A) => Boolean): Option[A]

返回第一个满足p的元素或None。注意:如果找到满足条件的元素,迭代器会被置于该元素之后;如果没有找到,会被置于终点。

18

def flatMap[B](f: (A) => GenTraversableOnce[B]): Iterator[B]

针对迭代器的序列中的每个元素应用函数f,并返回指向结果序列的迭代器。

19

def forall(p: (A) => Boolean): Boolean

返回一个布尔值,指明 it 所指元素是否都满足p。

20

def foreach(f: (A) => Unit): Unit

在迭代器返回的每个元素上执行指定的程序 f

21

def hasDefiniteSize: Boolean

如果迭代器的元素个数有限则返回true(缺省等同于isEmpty)

22

def indexOf(elem: B): Int

返回迭代器的元素中index等于x的第一个元素。注意:迭代器会越过这个元素。

23

def indexWhere(p: (A) => Boolean): Int

返回迭代器的元素中下标满足条件p的元素。注意:迭代器会越过这个元素。

24

def isEmpty: Boolean

检查it是否为空, 为空返回 true,否则返回false(与hasNext相反)。

25

def isTraversableAgain: Boolean

Tests whether this Iterator can be repeatedly traversed.

26

def length: Int

返回迭代器元素的数量。

27

def map[B](f: (A) => B): Iterator[B]

将 it 中的每个元素传入函数 f 后的结果生成新的迭代器。

28

def max: A

返回迭代器迭代器元素中最大的元素。

29

def min: A

返回迭代器迭代器元素中最小的元素。

30

def mkString: String

将迭代器所有元素转换成字符串。

31

def mkString(sep: String): String

将迭代器所有元素转换成字符串,并指定分隔符。

32

def nonEmpty: Boolean

检查容器中是否包含元素(相当于 hasNext)。

33

def padTo(len: Int, elem: A): Iterator[A]

首先返回迭代器所有元素,追加拷贝 elem 直到长度达到 len。

34

def patch(from: Int, patchElems: Iterator[B], replaced: Int): Iterator[B]

返回一个新迭代器,其中自第 from 个元素开始的 replaced 个元素被迭代器所指元素替换。

35

def product: A

返回迭代器所指数值型元素的积。

36

def sameElements(that: Iterator[_]): Boolean

判断迭代器和指定的迭代器参数是否依次返回相同元素

37

def seq: Iterator[A]

返回集合的系列视图

38

def size: Int

返回迭代器的元素数量

39

def slice(from: Int, until: Int): Iterator[A]

返回一个新的迭代器,指向迭代器所指向的序列中从开始于第 from 个元素、结束于第 until 个元素的片段。

40

def sum: A

返回迭代器所指数值型元素的和

41

def take(n: Int): Iterator[A]

返回前 n 个元素的新迭代器。

42

def toArray: Array[A]

将迭代器指向的所有元素归入数组并返回。

43

def toBuffer: Buffer[B]

将迭代器指向的所有元素拷贝至缓冲区 Buffer。

44

def toIterable: Iterable[A]

Returns an Iterable containing all elements of this traversable or iterator. This will not terminate for infinite iterators.

45

def toIterator: Iterator[A]

把迭代器的所有元素归入一个Iterator容器并返回。

46

def toList: List[A]

把迭代器的所有元素归入列表并返回

47

def toMap[T, U]: Map[T, U]

将迭代器的所有键值对归入一个Map并返回。

48

def toSeq: Seq[A]

将代器的所有元素归入一个Seq容器并返回。

49

def toString(): String

将迭代器转换为字符串

50

def zip[B](that: Iterator[B]): Iterator[(A, B)

返回一个新迭代器,指向分别由迭代器和指定的迭代器 that 元素一一对应而成的二元组序列

from: http://blog.csdn.net/pipisorry/article/details/52902549

ref:

Scala:集合类型Collection和迭代器相关推荐

  1. 【Scala 教程】Scala 集合类型

    作者:梦家 个人站点:dreamhomes.top 公众号:DreamHub Scala Collection Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变 ...

  2. 集合之Collection以及迭代器和比较器

    集合 1. 集合的概念 集合是Java API所提供的一系列类,可以用于动态存放多个对象.–集合只能存对象 集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型.(集合 ...

  3. scala to java_Scala 2.13 以后Java集合与Scala集合互相转换

    原来需要Java集合和Scala集合类型互换时引入import scala.collection.JavaConverters._1 即可,但在Scala 2.13版本中JavaConverter已经 ...

  4. Kotlin集合—集合类型共性和操作

    代码: package com.init.demo.collection/** * 集合类型Collection * Kotlin本身就提供了一组非常良好的原生集合类型接口,分为几下几种; * • I ...

  5. java 顶层类_Javase之集合体系之(1)集合顶层类Collection与其迭代器知识

    集合体系之集合顶层类Collection与其迭代器知识 集合的由来:Java是一门面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,就必须把多个对象进行存储,而要存 ...

  6. 集合-1(Collection、迭代器、Collections、泛型)

    1. Collection Collection是整个集合框架的基础,作用只是提供维护一组对象的基本接口. 1.1 创建集合 父类引用指向子类对象 Collection<元素类型> 变量名 ...

  7. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  8. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  9. 2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型

    2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型 Collection集合 java.util.coLlection接口 所有单列集合的最 ...

  10. 集合 Collection 与迭代器 Iterator

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 集合(C ...

最新文章

  1. 2015年最棒的10个 JavaScript 框架
  2. 为什么阿里巴巴开发手册中强制要求 POJO 类使用包装类型?NPE问题防范
  3. 岛国小姐姐来例假时,男朋友背着她偷偷查手机......
  4. 技术员联盟win11系统64位专业版镜像v2021.08
  5. python中_new_和_init_的区别_Python 中的__new__和__init__的区别
  6. C#.Net工作笔记010---c#中的静态扩展方法_可动态给string等_添加共通方法好用
  7. android adb日志过滤包名,adb过滤只查看某一个app的日志
  8. linux socket版本 can,linux socket can程序cantool
  9. 荣耀笔记本linux版拆机,拆机荣耀 MagicBook 锐龙版,真材实料一眼看到
  10. 安排,2020新kafka视频教程零基础到精通
  11. SAP系统配置SMPT邮箱
  12. oracle cve 漏洞,CVE安全漏洞的理解
  13. 无线通信———比较射频和蜂窝电话
  14. Rooting Android
  15. Three.js从入门到放弃
  16. 计算机键盘输入错乱,win10电脑键盘错乱的三种解决方法
  17. 如何在word中插入latex公式和伪代码
  18. 【AAAI 2021】跨层知识蒸馏:Cross-Layer Distillation with Semantic Calibration
  19. Python 切片
  20. 算法 - n个数字形成的圆圈中循环删除第m个数字(C++)

热门文章

  1. web前端网站优化-你真的不重要了吗?
  2. MiluGPS(迷路者GPS导航软件)
  3. Xshell 常见问题及相关配置
  4. HTTP中POST请求方法的几种Content-Type(内容类型)介绍
  5. orangepi自启动打开一个终端并且运行脚本
  6. 续上节,,基于App布局信息操作手机
  7. 【最短路径】 SPFA算法优化
  8. 调用wsdl的接口-用axis
  9. gitgithub 的使用
  10. OracleDG主库丢失归档增量同步