Chapter13
package scala /**
* Created by EX-CHENZECHAO001 on 2018-04-04.
*/
class Chapter13 {
// 13 集合
// 所有的集合都扩展自Iterable特质
// 集合有三大类,分别为序列、集和映射
// 对于几乎所有集合类,Scala都同时提供了可变和不可变的版本
// Scala列表要么是空,要么拥有一头一尾,其中尾部本身又是一个列表
// 集是无先后次序的集合
// 用LinkedHashSet来保留插入顺序,或都用SortSet来按顺序进行迭代。
// +将元素添加到无先后次序的集合中;+:和:+向前和向后追加到序列;++将两个集合串接在一起;-和--移除元素
// Iterable和Seq特质有数十个用于常见操作的方法。在编写循环前先看这些方法是否可以满足需求
// 映射、折叠和拉链操作是很有用的技巧,用来将函数或操作应用到集合中的元素 }
object Chapter13 {
// 13.1 主要的集合特质
// Iterable 批的是那些能生成用来访问集合中所有元素的Iterator的集合
// 这是遍历一个集合最基本的方式
// Seq是一个有先后次序的值的序列,比如数组或列表.IndexedSeq允许我们通过整型的下标快速地访问任意元素.
// Set是一组没有先后次序的值.在SortedSet中,元素以某种排过序的顺序被访问
// Map是一组(键,值)对偶.SortedMap按照键的排序访问其中的实体. // Scala集合的继承层级与Java很相似,同时有一些不错的改进
// 映射隶属于同一个继承而不是一个单独的层级关系
// IndexedSeq是数组的超类型,但不是列表的超类型,以便于区分 // 每个Scala集合特质或类都有一个带有apply方法的伴生对象,这个apply方法可以用来构建该集合的实例 // 13.2 可变和不可变集合
// Scala同时支持可变的和不可变的集合.不可变的集合从不改变,因此你可以安全地共享其引用,甚至是在一个多线程的应用程序当中也没问题.
// scala.collection.mutable.Map和scala.collection.immutable.Map有一个共有的超类型scala.collection.Map // Scala优先采用不可变集合.scala.collection包中的伴生对象产出对象产出不可变的集合.
// 默认被引入的scala包和Predef对象里都指向不可变特质的类型另名List,Set和Map.Predef.Map和scala.collection.immutable.Map是一回事
// 计算某个整数中所有出现过的数字的集
def digits(n: Int): Set[Int] = {
if(n < 0) {
digits(-n)
}else{
if(n < 10){
Set(n)
}else{
digits(n / 10) + (n % 10)
}
}
} // 13.3 序列
// Vector是ArrayBuffer的不可变版本:一个带下标的序列,支持快速的随机访问。向量是以树形结构的形式实现的,每个节点可以不超过32个子节点。
// 对于一个有100W个元素的向量而言,我们只需要四层节点.访问这样的一个列表中的某个元素只需4跳,而在链表中,同样的操作平均需要500 000跳
// Range表示一个整数序列,Range对象并不存储所有值而只是起始值、结束值和增值,可用to和until方法来构造Range对象 }
Chapter13的更多相关文章
- 《Linux内核设计与实现》CHAPTER13阅读梳理
<Linux内核设计与实现>第13章阅读总结 [edited by 5216lwr] 一.虚拟文件系统概述 1.虚拟文件系统 (也称作虚拟文件交换或VF)作为内核子系统,为用户空间程序提供 ...
- Chapter12&Chapter13:程序实例
文本查询程序 要求:程序允许用户在一个给定文件中查询单词.查询结果是单词在文件中出现的次数及所在行的列表.如果一个单词在一行中出现多次,此行只列出一次. 对要求的分析: 1.读入文件,必须记住单词出现 ...
- Chapter13:拷贝控制
拷贝控制操作:拷贝构造函数.拷贝赋值运算符.移动构造函数.移动赋值运算符.析构函数. 实现拷贝控制操作的最困难的地方是首先认识到什么时候需要定义这些操作. 拷贝构造函数: 如果一个构造函数的第一个参数 ...
- 【APUE】Chapter13 Daemon Processes
这章节内容比较紧凑,主要有5部分: 1. 守护进程的特点 2. 守护进程的构造步骤及原理. 3. 守护进程示例:系统日志守护进程服务syslogd的相关函数. 4. Singe-Instance 守护 ...
- [SharePoint][SharePoint Designer 入门经典]Chapter13 客户端Silverlight编程
1.使用Silverlight,CAML和Linq取得数据 2.编程性创建更新删除列表数据项 3.修饰列表和库的配置 4.管理文件和文件夹 5.修改快速启动和顶部导航条 [使用Silverlight, ...
- [SharePoint][SharePoint Designer 入门经典]Chapter13 客户端JavaScript编程
1.创建客户对象模型的页面 2.使用CAML从SPS中取得数据 3.创建更新删除列表项目 4.为ribbon添加项目
- [using_microsoft_infopath_2010]Chapter13 SharePoint视图和控制板
本章概要: 1.规划站点的外观,使用View和web部件 2.为登录进来的用户展示相关的表单. 3.为管理员创建视图 4.从表单中收集到的数据中创建报表
- Java题库——Chapter13抽象类和接口
)What is the output of running class Test? public class Test { public static void main(String[ ] arg ...
- 【笔记】《Redis设计与实现》chapter13 客户端
服务器为每个客户端建立相应的redis.h/redisClient结构,这个结构保存了客户端当前的状态信息 客户端的套接字描述符 客户端的名字 客户端的标志值 只想客户端正在使用的数据库的指针,以及该 ...
随机推荐
- BestCoder Round #93 比赛记录
机房又迎来了一次BC.大家都沸腾了... BC开场,大家全都瞬间开始 啪啦啪啦啪啦啪啦 都要赶紧水过第一题. 第一题明显直接贪心就好了,用map去重. 本人荣幸地第一个写完,提交 Wa. (崩溃的内心 ...
- Operating System-Thread(5)弹出式线程&&使单线程代码多线程化会产生那些问题
本文主要内容 弹出式线程(Pop-up threads) 使单线程代码多线程化会产生那些问题 一.弹出式线程(Pop-up threads) 以在一个http到达之后一个Service的处理为例子来介 ...
- 安装DCOS,关于docker异常引发的调查
入门DCOS,刚开始安装,碰到了一个异常: Bind for 0.0.0.0:9000 failed: port is already allocated. 调试这个问题花费了好长时间,因为无法通过n ...
- BZOJ4009:[HNOI2015]接水果
浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...
- Java的native关键字
一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...
- oracle rac搭建
(一)环境准备 主机操作系统 windows10 虚拟机平台 vmware workstation 12 虚拟机操作系统 redhat 5.5 x86(32位) :Linux.5.5.for.x86. ...
- 人物-IT-史玉柱:史玉柱
ylbtech-人物-IT-史玉柱:史玉柱 史玉柱,1962年9月15日生于安徽省蚌埠市怀远县,商人.企业家. 1984年从浙江大学数学系本科毕业,分配至安徽省统计局工作.1989年深圳大学软件科学系 ...
- C++中的对象的赋值和复制
对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象.这里所指的对象的值是指对象中所有数据成员的值. 对象之间的赋值也是通过赋值 ...
- 8、泛型程序设计与c++标准模板库4.标准c++库中的算法
标准c++算法是通过迭代器和模板来实现的,其实算法本身就是一种函数模板. 算法从迭代器那里获得一个元素,而迭代器则知道一个元素在容器中的什么位置.迭代器查找元素的位置并将这些信息提供给算法以便算法能够 ...
- hdu1050
#include <cstdio> #include <algorithm> using namespace std; #define SIZE 205 struct Data ...