集合的衍生操作
* 1. 获取集合的head
* 2. 获取集合的tail(返回去掉head节点的集合)
* 3. 获取集合最后一个数据
* 4. 获取集合初始元素(不包含最后一个)
* 5. 集合反转
* 6. 获取前(后)n个元素
* 7. 去掉前(后)n个元素
* 8. 并集
* 9. 交集
* 10. 差集
* 11. 拉链
* 说明
* 1. 相同位置上的元素组成 2元元组,返回2元元组的List
* 2. 如果两个集合元素个数不同,那么会将同等数量的数据进行拉链,多余的省略不用
* 12. 滑窗
* 说明
* 1 2 3 4 5 6
* 窗口内元素:2 步长:1
* 返回 1-2 2-3 3-4 4-5 5-6
* */
/*
* 集合的衍生操作
* 1. 获取集合的head
* 2. 获取集合的tail(返回去掉head节点的集合)
* 3. 获取集合最后一个数据
* 4. 获取集合初始元素(不包含最后一个)
* 5. 集合反转
* 6. 获取前(后)n个元素
* 7. 去掉前(后)n个元素
* 8. 并集
* 9. 交集
* 10. 差集
* 11. 拉链
* 说明
* 1. 相同位置上的元素组成 2元元组,返回2元元组的List
* 2. 如果两个集合元素个数不同,那么会将同等数量的数据进行拉链,多余的省略不用
* 12. 滑窗
* 说明
* 1 2 3 4 5 6
* 窗口内元素:2 步长:1
* 返回 1-2 2-3 3-4 4-5 5-6
* */
object TestList extends App {
// 初始化
var list1 = List(1, 2, 3, 4, 5)
var list2 = List(4, 5, 6, 7, 8)
//1. 获取集合的head
println("list1-head:%d", list1.head)
println("list2-head:%d", list2.head)
//2. 获取集合的tail(返回去掉head节点的集合)
println(list1.tail)
println(list2.tail)
//3. 获取集合最后一个数据
println(list1.last)
println(list2.last)
//4. 获取集合初始元素(不包含最后一个)
println(list1.init)
println(list2.init)
//5.集合反转
println(list1.reverse)
println(list2.reverse)
//6.获取前(后)n个元素
println(list1.take(3)) // 前
println(list2.takeRight(3)) //后
//7.去掉前(后)n个元素
println(list1.drop(3)) // 前
println(list2.dropRight(3)) //后
//8.并集
var list3 = list1.concat(list2)
var list4 = list1.union(list2) //底层调concat方法
println(list3)
println(list4)
//9.交集 - intersection
var list5 = list1.intersect(list2)
println(list5)
//10.差集 - difference
var list6 = list1.diff(list2)
println(list6)
//11.拉链 - zipper
var list7: List[(Int, Int)] = list1.zip(list2)
println(list7)
//12.滑窗 - Sliding window
var list8 = list1.sliding(2) //指定窗口内元素个数,滑动步长默认为1
var list9 = list1.sliding(2, 2) //指定窗口内元素个数,指定步长为2
println(list8.mkString("-"))
println(list9.mkString("-"))
}