Scala之集合Collection

概述

Scala的集合类可以从三个维度进行切分:

  • 可变与不可变集合(Immutable and mutable collections)
  • 静态与延迟加载集合 (Eager and delayed evaluation )
  • 串行与并行计算集合(Sequential and parallel evaluation )

关于第一个维度我想我们不需要再介绍了。关于第二维度,是这样解释的, 首先我们来解释一个概念:transformation,集合中有大量的操作都是把一个集合“转换”成另一个集合,比如map,filter等等。而Eager和Delayed集合的区别在于:Eager集合总是立即为元素分配内存,当遇到一个transform动作时,Eager的集合会直接计算并返回结果,而Delayed集合则会尽可能晚的推迟执行,直到必须返回结果时才去执行。这一点和Spark RDD操作中的transformation和action非常类似。

在现有的集合里,只有Stream是Lasy的,所有其他的集合都是静态(Eager)加载的。但是你可以很容易地把一个静态集合转换成lazy的,那就是创建一个view。

集合类型总览

Immutable Collection

Immutable Seq

Seq主要分两大类:indexed sequences和linear sequences,indexed sequences暗示本类集合在随机读取方面有较高的性能(类似数据结构中的数组)。linear sequences暗示本类集合在head和tail操作和顺序遍历上更有优势(类似于数据结构中的双向列表)

在使用Seq时,默认使用的具体类是List, 使用IndexedSeq时默认使用的具体类是Vector.

scala> val seq = Seq(1,2,3)
seq: Seq[Int] = List(1, 2, 3)

scala> val indexedSeq = IndexedSeq(1,2,3)
indexedSeq: IndexedSeq[Int] = Vector(1, 2, 3)

Immutable Set

Immutable Map

Mutable Seq

如何选择集合类

各种Immutable Sequence的特性比较

各种Mutable Sequence的特性比较

各种Map的特性比较

各种Set的特性比较

注: 本文类图参考自《Beginning Scala》, 表格参考自《Scala Cookbook》

时间: 2024-10-25 05:31:35

Scala之集合Collection的相关文章

Scala的集合

1.集合基础概念 ? (1)集合的相关介绍 ? ? Scala的集合有三大类:序列(seq).集合(set).映射(map)所有的集合都扩展自Iterable 特质,在Scala中集合有可变和不可变两种类型,可变集合可以在适当的地方被更新或者扩展,这意味着可以修改.添加.移除一个集合的元素,而不可变集合类则永远不会改变,但是仍然可以模拟添加.移除.或者更新操作,但是这些操作下都会返回一个新的集合.immutable 类型的集合 初始化后就不能改变了(注意与 val 修饰的变量进行区别),val

java集合Collection接口

collection集合 Map集合 Collection接口 Collection接口是List.Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集Collection提供了大量添加.删除.访问的方法来访问集合元素.主要的方法如下:

使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据

数据集(DataSet).数据表(DataTable).集合(Collection)概念是.NET FrameWork里提供数据类型,在应用程序编程过程中会经常使用其来作为数据的载体,属于ADO.NET的一部分.今天我们WCF分布式开发步步为赢第8节的内容:使用数据集(DataSet).数据表(DataTable).集合(Collection)传递数据.本节内容除了介绍几个类型概念外的,同样会详细给出代码的实现过程.此外我们会分析这几种数据类型的优势和缺点,以及在面向对象的服务开发过程中如何解决

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.

在含有null值的复杂类的集合(Collection)中取最大值

在日常编程中,经常遇到要在一组复杂类的集合(Collection)中做比较.取最大值或最小值. 举个最简单的例子,我们要在一个如下结构的集合中选取包含最大值的元素: public class Class<T> where T : struct { public T? Value { get; set; } } var ints = new List<Class<int>>() { new Class<int>() { Value = 2 }, new Cla

java基础(五)--- 集合collection

集合 collection: Collection 层次结构中的根接口: Collection的功能概述: * 1:添加功能 * boolean add(Object obj):添加一个元素 * boolean addAll(Collection c):添加一个集合的元素 * 2:删除功能 * void clear():移除所有元素 * boolean remove(Object o):移除一个元素 * 3:判断功能 * boolean contains(Object o):判断集合中是否包含指

【转】Scala学习——集合

原文链接 http://nerd-is.in/2013-09/scala-learning-collections/ 所有集合都扩展自Iterable特质 集合有三大类,分别为序列,集和映射 对于几乎所有集合类,Scala都同时提供了可变的和不可变的版本 Scala列表要么是空的,要么拥有一头一尾,其中尾部本身又是一个列表 集是无先后次序的集合 用LinkedHashSet来保留插入顺序,或者用SortedSet来按顺序进行迭代 +将元素添加到无先后顺序的集合中:+: 和 :+ 向前或向后追加到

Java集合 - Collection

Ref:http://blog.csdn.net/liulin_good/article/details/6213815  http://www.cnblogs.com/averey/p/4306166.html 一.java.util.Iterator<E>接口 迭代器 1 package java.util; 2 3 public interface Iterator<E>{ 4 // Return true iteration has more elements 5 bool

java之集合Collection 3个例子

package cn.itcast_01; import java.util.ArrayList; import java.util.Collection; /* * 集合的由来: * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里面,有哪些是容器类型的呢? * 数组和StringBuffer.但是呢?Strin