From 2c057592dd417b7bf78a933e6e48f646c1870baa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com>
Date: Tue, 7 May 2019 15:39:17 +0800
Subject: [PATCH] modify
---
README.md | 13 +++---
notes/Scala列表.md | 5 +--
...la数组相关操作.md => Scala数组.md} | 18 +++-----
notes/Scala映射和元组.md | 44 ++++++++++---------
4 files changed, 40 insertions(+), 40 deletions(-)
rename notes/{Scala数组相关操作.md => Scala数组.md} (84%)
diff --git a/README.md b/README.md
index 167844c..0933826 100644
--- a/README.md
+++ b/README.md
@@ -142,8 +142,11 @@ TODO
1. [Scala简介及开发环境配置](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala简介及开发环境配置.md)
2. [基本数据类型和运算符](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala基本数据类型和运算符.md)
-3. [数组](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala数组相关操作.md)
-4. [集合](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala集合.md)
-5. [集合使用(1)——列表](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala列表.md)
-6. [集合使用(2)——映射和元组](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala映射和元组.md)
-7. [流程控制语句](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala流程控制语句.md)
\ No newline at end of file
+3. [流程控制语句](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala流程控制语句.md)
+4. [数组Array](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala数组.md)
+5. [集合综述](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala集合.md)
+6. [常用集合类型之——List](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala列表.md)
+7. [常用集合类型之——Map & Tuple](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala映射和元组.md)
+8. 其他常用集合类型
+9. 类和对象
+10. 函数和闭包
\ No newline at end of file
diff --git a/notes/Scala列表.md b/notes/Scala列表.md
index 0457745..587c102 100644
--- a/notes/Scala列表.md
+++ b/notes/Scala列表.md
@@ -8,10 +8,9 @@
五、列表的基本操作
六、列表的高级操作
七、List对象的方法
-八、处理多个列表
+八、处理多个List
-
## 一、List字面量
List是Scala中非常重要的一个数据结构,其与Array(数组)非常类似,但是List是不可变的,和Java中的List一样,其底层实现是链表。
@@ -413,7 +412,7 @@ res41: List[Nothing] = List()
-## 八、处理多个列表
+## 八、处理多个List
当多个List被放入同一个tuple中时候,可以通过zipped对多个List进行关联处理。
diff --git a/notes/Scala数组相关操作.md b/notes/Scala数组.md
similarity index 84%
rename from notes/Scala数组相关操作.md
rename to notes/Scala数组.md
index c6af337..f57b1ee 100644
--- a/notes/Scala数组相关操作.md
+++ b/notes/Scala数组.md
@@ -11,7 +11,10 @@
## 一、定长数组
-在Scala中,如果你需要一个长度不变的数组,可以用Array。
+在Scala中,如果你需要一个长度不变的数组,可以使用Array。同时需要注意以下两点:
+
+- 在scala中使用`(index)`而不是`[index]`来访问数组中的元素,因为访问元素,对于Scala来说是方法调用,`(index)`相当于执行了`.apply(index)`方法。
+- scala中的数组与Java中的是等价的,`Array[Int]()`在虚拟机层面就等价于Java的`int[]`。
```scala
// 10个整数的数组,所有元素初始化为0
@@ -31,16 +34,9 @@ scala> a(0)
res3: String = hello
```
-这里需要注意以下两点:
-
-+ 在scala中使用`(index)`而不是`[index]`来访问数组中的元素,因为访问元素,对于Scala来说是方法调用,`(index)`相当于执行了`.apply(index)`方法。
-+ scala中的数组与Java中的是等价的,`Array[Int]()`在虚拟机层面就等价于Java的`int[]`。
-
-
-
## 二、变长数组
-在scala中,通过ArrayBuffer实现变长数组(又称缓冲数组),相当于Java中的ArrayList。变长数组的构建方式及常用操作如下:
+在scala中通过ArrayBuffer实现变长数组(又称缓冲数组)。在构建ArrayBuffer时必须给出类型参数,但不必指定长度,因为ArrayBuffer会在需要的时候自动扩容和缩容。变长数组的构建方式及常用操作如下:
```java
import scala.collection.mutable.ArrayBuffer
@@ -75,7 +71,7 @@ object ScalaApp {
}
```
-这里需要说明的是:由于scala的变长数组是使用java的集合来实现的,而Java集合的底层实现是链表,这意味使用`+= `在末尾插入元素是一个高效的操作,因为其时间复杂度是O(1)。而使用insert随机插入元素的时间复杂度是O(n),因为在其插入位置之后的所有元素都要进行对应地后移,所以在`ArrayBuffer`中随机插入元素是一个低效的操作。
+这里需要说明的是:使用`+= `在末尾插入元素是一个高效的操作,其时间复杂度是O(1)。而使用insert随机插入元素的时间复杂度是O(n),因为在其插入位置之后的所有元素都要进行对应地后移,所以在`ArrayBuffer`中随机插入元素是一个低效的操作。
## 三、数组遍历
@@ -138,7 +134,7 @@ object ScalaApp extends App {
## 五、多维数组
-和Java中一样,多维数组由单位数组组成。
+和Java中一样,多维数组由单维数组组成。
```scala
object ScalaApp extends App {
diff --git a/notes/Scala映射和元组.md b/notes/Scala映射和元组.md
index 1042070..2ad5666 100644
--- a/notes/Scala映射和元组.md
+++ b/notes/Scala映射和元组.md
@@ -1,36 +1,38 @@
-# Scala映射和元组
+# Map & Tuple
+
+
## 一、映射(Map)
-### 1.1 构造映射
+### 1.1 构造Map
```scala
// 初始化一个空map
val scores01 = new HashMap[String, Int]
-// 从指定的值初始化映射(方式一)
+// 从指定的值初始化Map(方式一)
val scores02 = Map("hadoop" -> 10, "spark" -> 20, "storm" -> 30)
-// 从指定的值初始化映射(方式二)
+// 从指定的值初始化Map(方式二)
val scores03 = Map(("hadoop", 10), ("spark", 20), ("storm", 30))
```
-采用上面方式得到的都是不可变(immutable)映射,想要得到可变映射,则用:
+采用上面方式得到的都是不可变Map(immutable map),想要得到可变Map(mutable map),则需要使用:
```scala
val scores04 = scala.collection.mutable.Map("hadoop" -> 10, "spark" -> 20, "storm" -> 30)
@@ -53,7 +55,7 @@ object ScalaApp extends App {
### 1.3 新增/修改/删除值
-可变映射允许进行新增、修改、删除等操作。
+可变Map允许进行新增、修改、删除等操作。
```scala
object ScalaApp extends App {
@@ -82,7 +84,7 @@ object ScalaApp extends App {
(hive,50)
```
-不可变映射不允许进行新增、修改、删除等操作,但是允许由不可变映射产生新的映射。
+不可变Map不允许进行新增、修改、删除等操作,但是允许由不可变Map产生新的Map。
```scala
object ScalaApp extends App {
@@ -102,7 +104,7 @@ object ScalaApp extends App {
(hive,50)
```
-### 1.4 遍历映射
+### 1.4 遍历Map
```java
object ScalaApp extends App {
@@ -121,9 +123,9 @@ object ScalaApp extends App {
}
```
-### 1.5 产生新映射
+### 1.5 yield关键字
-可以使用`yield`关键字从现有映射产生新的映射。
+可以使用`yield`关键字从现有Map产生新的Map。
```scala
object ScalaApp extends App {
@@ -151,7 +153,7 @@ object ScalaApp extends App {
(30,storm)
```
-### 1.6 有序映射
+### 1.6 其他Map结构
在使用Map时候,如果不指定,默认使用的是HashMap,如果想要使用`TreeMap`或者`LinkedHashMap`,则需要显式的指定。
@@ -177,7 +179,7 @@ object ScalaApp extends App {
(C,30)
```
-### 1.7 其他方法
+### 1.7 可选方法
```scala
object ScalaApp extends App {
@@ -229,7 +231,7 @@ tuple: (Int, Float, String) = (1,3.24,scala)
### 2.1 模式匹配
-可以通过模式匹配来进行获取元组中的值并赋予对应的变量:
+可以通过模式匹配来获取元组中的值并赋予对应的变量:
```scala
scala> val (a,b,c)=tuple
@@ -245,7 +247,7 @@ scala> val (a,_,_)=tuple
a: Int = 1
```
-### 2.2 Zip方法
+### 2.2 zip方法
```scala
object ScalaApp extends App {
@@ -255,7 +257,7 @@ object ScalaApp extends App {
// 1.zip方法得到的是多个tuple组成的数组
val tuples: Array[(String, Int)] = array01.zip(array02)
- // 2.也可以在zip后调用toMap方法转换为映射
+ // 2.也可以在zip后调用toMap方法转换为Map
val map: Map[String, Int] = array01.zip(array02).toMap
for (elem <- tuples) { println(elem) }