This commit is contained in:
罗祥 2019-05-07 16:44:02 +08:00
parent 2c057592dd
commit 65bbc1b173
2 changed files with 105 additions and 8 deletions

View File

@ -143,10 +143,9 @@ 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. [数组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. 函数和闭包
4. [数组——Array](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala数组.md)
5. [常用集合类型之——List & Set](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala列表和集.md)
6. [常用集合类型之——Map & Tuple](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Scala映射和元组.md)
7. 集合综述与总结
8. 类和对象
9. 函数和闭包

View File

@ -1,4 +1,4 @@
# 列表(List)
# List & Set
<nav>
<a href="#一List字面量">一、List字面量</a><br/>
@ -9,8 +9,12 @@
<a href="#六列表的高级操作">六、列表的高级操作</a><br/>
<a href="#七List对象的方法">七、List对象的方法</a><br/>
<a href="#八处理多个List">八、处理多个List</a><br/>
<a href="#九缓冲列表ListBuffer">九、缓冲列表ListBuffer</a><br/>
<a href="#十集Set">十、集(Set)</a><br/>
</nav>
## 一、List字面量
List是Scala中非常重要的一个数据结构其与Array(数组)非常类似但是List是不可变的和Java中的List一样其底层实现是链表。
@ -432,6 +436,100 @@ res44: Boolean = true
## 九、缓冲列表ListBuffer
上面介绍的List由于其底层实现是链表这意味着能快速访问List头部元素但对尾部元素的访问则比较低效这时候可以采用`ListBuffer`ListBuffer提供了在常量时间内往头部和尾部追加元素。
```scala
object ScalaApp extends App {
val buffer = new ListBuffer[Int]
// 1.在尾部追加元素
buffer += 1
buffer += 2
// 2.在头部追加元素
3 +=: buffer
// 3. ListBuffer转List
val list: List[Int] = buffer.toList
println(list)
}
```
## 十、集(Set)
Set是不重复元素的集合。分为可变Set和不可变Set。
### 10.1 可变Set
```scala
object ScalaApp extends App {
// 可变Set
val mutableSet = new collection.mutable.HashSet[Int]
// 1.添加元素
mutableSet.add(1)
mutableSet.add(2)
mutableSet.add(3)
mutableSet.add(3)
mutableSet.add(4)
// 2.移除元素
mutableSet.remove(2)
// 3.调用mkString方法 输出1,3,4
println(mutableSet.mkString(","))
// 4. 获取Set中最小元素
println(mutableSet.min)
// 5. 获取Set中最大元素
println(mutableSet.max)
}
```
### 10.2 不可变Set
不可变Set没有add方法可以使用`+`添加元素但是此时会返回一个新的不可变Set原来的Set不变。
```scala
object ScalaApp extends App {
// 不可变Set
val immutableSet = new collection.immutable.HashSet[Int]
val ints: HashSet[Int] = immutableSet+1
println(ints)
}
// 输出 Set(1)
```
### 10.3 Set间操作
多个Set之间可以进行求交集或者合集等操作。
```scala
object ScalaApp extends App {
// 声明有序Set
val mutableSet = collection.mutable.SortedSet(1, 2, 3, 4, 5)
val immutableSet = collection.immutable.SortedSet(3, 4, 5, 6, 7)
// 两个Set的合集 输出TreeSet(1, 2, 3, 4, 5, 6, 7)
println(mutableSet ++ immutableSet)
// 两个Set的交集 输出TreeSet(3, 4, 5)
println(mutableSet intersect immutableSet)
}
```
## 参考资料