《Scala集合技术手册》是首部全面介绍Scala集合框架的图书,它基于最新的Scala 2.11编写,深入全面地介绍了Scala集合框架的集合类和方法,通过图例、代码示例、表格等多种方式多方位地介绍集合类的方法和实现,并且对相关的类型的性能进行分析和比较,总结了各个集合类的特点,帮助读者快速地掌握Scala集合框架,并且可以作为日常Scala开发的参考书。
首部Scala中文原创图书 透过集合框架感受优雅务实|迈向专业殿堂
序
在我十六年多的编程生涯中,大部分项目中我都使用Java开发。Java的生态圈非常的庞大而丰富,可以帮助我快速地实现项目的架构和开发。虽然感觉Java的语法有很多啰唆的地方,也调研过Groovy、Python等编程语言,但还是觉得Java比较适合开发工作。但是当我尝试使用Scala实现了一个高性能的消息系统的时候,我彻底地喜欢上了Scala,它简洁的语法、丰富的特性、面向对象和函数式编程的美妙结合都给我留下了深刻的印象。因为Scala是基于JVM的编程语言,它可以使用Java实现的库,充分利用Java生态圈中已有的库,而性能上又不会有多少损失,所以我经常使用Scala做一些编程的工作。通过阅读Kafka等Scala实现框架,也促使我更加地坚信Scala的简洁高效。
但是,完全掌握Scala的特性、熟练使用它的库和编程方式进行开发却不是一件容易的事情。如果有Java编程经验,则Scala入门会是一件很容易的事情,但是到专家级别却是一个曲折的过程。这是因为,一、Scala的语法相比其他语言,如Java、Python、Go等要复杂很多,要想完全理解和掌握需要较长的时间。二、Scala本身提供了非常多的库,尤其是占重要部分的集合库,只有熟练掌握它们才能轻松地应用到开发中。
对于第一个问题,现在已经有了多本介绍和学习Scala语法的书,尤其是刚刚出版的Scala之父Martin Odersky编写的《Programming in Scala》第三版,都是很好的学习和深入了解Scala语法的图书。通过编程实践以及阅读其他Scala开发的项目,也会很快地提高Scala语法的掌握程度。
对于第二个问题,尤其是Scala集合框架的全面介绍,并没有太好的学习资料,相关的Scala书籍中会有一两章关于Scala集合的介绍,官方的网站上也有多篇关于Scala集合的教程,但是总体来说都是粗略地或者说局部地介绍了Scala集合框架的类和方法,看过之后若有所得,但并不踏实,总是感觉没有全面地掌握Scala集合。所以针对这个需求,我动手编写了这本书,主要目的就是编写一本全面、专门、深入地介绍Scala集合的书与大家分享。
作为一本专门介绍Scala集合的图书,它有一些其他技术图书没有的特色:
y
图文并茂。 本书不仅提供了多幅插图,列出了并发/非并发集合类和Trait的继承关系,还为最主要的集合的方法提供了直观的图例,可以实现见图识意。
序
v
y
归类。 将类似的方法放在一起介绍,比如 map和flatmap,scan、scanLeft和scanRight,size和length等。
y
对比。 将容易混淆的方法进行对比,剖析它们之间的区别,比如head、last、init、tail,reduce和fold方法的区别等。
y
代码实例。通过最简单的代码类和方法的功能。代码简短而功能直接。
y
表格。通过表格进行汇总和知识整理。
y
全面。本书详细介绍了Scala集合绝大部分的类和方法,对于一些类还介绍了它的历史优化过程和当前的问题。
y
深入。对于一些典型的集合类,本书还深入介绍了它们的底层实现,通过底层实现了解它们的特性和性能。
我期望能通过多种方式搭建起本书的架构,多方位地帮助读者学习和掌握Scala集合库。而且本书还能作为案头的一本常用查找手册,当对Scala集合的类或者方法有疑惑时,可以通过翻看本书找到答案。
联系方式
尽管我尽量保持本书内容的准确性,每一个方法和例子都编写测试过,但是因为Scala集合框架的复杂和知识点比较多,加之作者水平有限,疏漏和错误在所难免,恳请广大读者批评指正。如果你发现了错误或好的建议,也可以联系我。我的联系方式如下:
邮箱:oldnest@gmail.com
新浪微博:colobu
致谢
特别感谢电子工业出版社的编辑张春雨,没有你的努力和辛苦工作,就不会有本书顺利的出版。没有你的激励,可能本书的内容只能三三两两地散落在我的笔记或者博客中,不能集结出版。
感谢我的老婆和儿子。写书占用了我大部分的业余时间,不能花更多的时间陪伴你们。春节的时候也只能让你们自己回娘家,给我独自的时间写稿和修改,没有你们的理解和支持,我也不能安心地写作。
谢谢阅读本书的朋友,如果没有你们对相关知识的渴求,也就不会有本书的编写。你们对Scala的喜爱,对Scala集合框架的知识的渴求,就是我写本书最大的动力。