7.集合类
111.可变set一

112.可变set二


113.不可变MAP集合一


114.不可变MAP集合二


115.不可变MAP集合三


116.可变map一
 package  com . itbaizhan . chapter07  
 
 //TODO 2. 使用  mutable.Map 前导入如下包  
 
 import  scala . collection . mutable  
 
 // 可变 Map 集合 object  MapMutable  extends  App  {  
 
 
 //TODO 1. mutable.Map 表示可变的 Map 集合  
 
 
 val  map1  =  mutable . Map ( 1  ->  " 刘备 " ,  2  ->  " 关  
 
 羽 " ,  3  ->  " 张飞 " )  
 
 
 val  map2  =  mutable . Map ( 6  ->  " 曹操 " ,  7  ->  " 许  
 
 褚 " ,  8  ->  " 夏侯渊 " )  
 
 
 //TODO 3. 添加键值对元素 , 原 Map 集合对象改变  
 
 
 map1 . put ( 4 , " 赵云 " )  
 
 
 println ( "put 后 map1:" + map1 . mkString ( "," ))  
 
 
 //TODO 4. +  添加键值对不改变原集合  
 
 
 val  map3 :  mutable . Map [ Int ,  String ]  =  map1  +  
 
 ( 5  ->  " 凤雏 " )  
 
 
 println ( "+ 后 map1:" + map1 . mkString ( "," ))  
 
 
 println ( "+ 后 map3:" + map3 . mkString ( "," ))  
 
 
 println ( map1 eq map3 ) //false  
 
 
 //TODO 5. +=  添加键值对改变原集合 , 并返回修改后 Map 对  
 
 象的地址  
 
 
 val  map4 :  mutable . Map [ Int ,  String ]  =  map1  +=  
 
 ( 5  ->  " 凤雏 " )  
 
 
 println ( "+= 后 map1:" + map1 . mkString ( "," ))  
 
 
 println ( "+= 后 map4:" + map4 . mkString ( "," ))  
 
 
 println ( map1 eq map4 ) //true  
 
 
 //TODO 6. 修改 key 对应的 value  
 
 
 map1 . update ( 1 , " 刘玄德 " )  
 
 
 println ( "update 后 map1:" + map1 . mkString ( "," ))  
 
 
 map1 ( 1 ) =  " 刘备 "  
 
 
 println ( "update 后 map1:" + map1 . mkString ( "," ))  
 
 
 //TODO 7. 删除数据  
 
 
 map1 . remove ( 1 )  
 
 
 println ( "remove 后 map1:" + map1 . mkString ( "," ))  
 
 
 // -  不改变原 Map 集合  
 
 
 val  map5 :  mutable . Map [ Int ,  String ]  =  map1  -  2   
 
 println ( "map1 - 2 后 map1:" + map1 . mkString ( "," ))  
 
 
 println ( "map5:" + map5 . mkString ( "," ))  
 
 
 // -=  不改变原 Map 集合  
 
 
 val  map6 :  mutable . Map [ Int ,  String ]  =  map1  -=  
 
 3  
 
 
 println ( "map1 -= 3 后  
 
 map1:" + map1 . mkString ( "," ))  
 
 
 println ( "map6:" + map6 . mkString ( "," ))  
 
 
 println ( map1 eq map6 ) //true  
 
 
 //TODO 8. Map 集合转换为其它类型的集合  
 
 
 val  set :  Set [( Int ,  String )]  =  map1 . toSet  
 
 
 println ( "set:" + set )  
 
 
 println ( "set String:" + set . mkString ( "," ))  
 
 
 val  list :  List [( Int ,  String )]  =  map1 . toList  
 
 
 println ( "list:" + list )  
 
 
 println ( "list String:" + list . mkString ( "," ))  
 
 
 val  seq :  Seq [( Int ,  String )]  =  map1 . toSeq  
 
 
 println ( "seq:" + seq )  
 
 
 val  array :  Array [( Int ,  String )]  =  
 
 map1 . toArray  
 
 
 println ( "array:" + array )  
 
 
 println ( "array String:" + array . mkString ( "," ))  
 
 
 //TODO 9. 其它常用方法  
 
 
 //get 和 getOrElse 方法的用途同不可变 Map 一样  
 
 
 println ( map1 . get ( 2 ))  
 
 
 println ( map1 . getOrElse ( 1 , "default" ))  
 
 
 //keys 获取所有的 key: Iterable[T]  
 
 
 val  keys :  Iterable [ Int ]  =  map1 . keys  
 
 
 //keySet 获取所有的 key: collection.Set[T]  
 
 
 val  keySet :  collection . Set [ Int ]  =  map1 . keySet  
 
 
 //keysIterator 获取所有的 key:: Iterator[T] 实时效果反馈  
 
 1.  关于可变 Map 相关代码的描述,错误的是:  
 
 A  
 
 使用可变 Map 集合,通常在 Map 前使用  
 
 mutable.  
 
 , 并提前导入  
 
 scala.collection.mutable  
 
 。  
 
 B  
 
 mkString("分隔符")  
 
 将 Map 集合中的键值对转换为字符串,键值对  
 
 之间使用指定的符号分割元素, key 和 value 之间使用 -> 。  
 
 C  
 
 update(1,"刘玄德")  
 
 如果 key 1 存在则修改,不存在则添加。  
 
 D  
 
 Map 集合不可以转换为其它类型的集合。  
 
 答案:  
 
 1=>D Map 集合转换为其它类型的集合  
 
 
 val  keysIterator :  Iterator [ Int ]  =  
 
 map1 . keysIterator  
 
 
 //values 获取所有的 value: Iterable[T]  
 
 
 val  values :  Iterable [ String ]  =  map1 . values  
 
 
 //valuesIterator 获取所有的 value: Iterator[T]  
 
 
 val  valuesIterator :  Iterator [ String ]  =  
 
 map1 . valuesIterator  
 
 
 // 清空 Map 集合  
 
 
 println ( "map2 clear 前 :" + map2 . mkString ( "," ))  
 
 
 map2 . clear ()  
 
 
 println ( "map2 clear 后 :" + map2 . mkString ( "," ))  
 
 
 //put  如果 key 不存在,则执行添加  
 
 
 map2 . put ( 1 , "aa" )  
 
 
 println ( "map2 put:" + map2 . mkString ( "," ))  
 
 } 
 
 
 
117.可变map二

118.可变map三

119.不可变数组一

 //  添加数组元素,创建新数组对象  
 
 
 val  arr3 :  Array [ Int ]  =  arr1  : +  5  
 
 
 println ( "arr1 string:" + arr1 . mkString ( "," ))  
 
 
 println ( "arr3  
 
 string:" + arr3 . mkString ( "," )) //8,9,0,5  
 
 
 val  arr4 :  Array [ Int ]  =  5 +: arr1  //arr1 +: 5  不  
 
 识别  
 
 
 println ( "arr4  
 
 string:" + arr4 . mkString ( "," )) //5,8,9,0  
 
 
 // 添加集合中的全部元素  
 
 
 val  arr5 :  Array [ Int ]  =  arr1  ++  arr2  
 
 
 println ( "arr5 string:" + arr5 . mkString ( "," ))  
 
 
 val  arr6 :  Array [ Int ]  =  arr1  ++:  arr2  // 等价  ++  
 
 
 println ( "arr6 string:" + arr6 . mkString ( "," ))  
 
 
 //TODO 5. 数组遍历  
 
 
 for ( ele  <-  arr1 ){  
 
 
 print ( ele + "\t" )  
 
 }  
 
 
 println ()  
 
 
 //arr1.foreach(println)  
 
 
 //arr1.foreach(print)  
 
 
 //TODO 6. 多维数组 
 
 
 
120.不可变数组二
 val  matrixArray :  Array [ Array [ Int ]]  =  
 
 Array . ofDim [ Int ]( 3 ,  2 )  
 
 
 matrixArray . foreach ( arrayEle => arrayEle . foreac  
 
 h ( println ))  
 
 
 //TODO 7. 合并数组 功能类似  ++  
 
 
 val  arr7 :  Array [ Int ]  =  Array . concat ( arr1 ,  
 
 arr2 )  
 
 
 println ( "arr7 string:" + arr7 . mkString ( "," ))  
 
 
 //TODO 8.range 的使用 实时效果反馈  
 
 1.  关于不可变 Array 相关的描述,错误的是:  
 
 A  
 
 不可变 Array 数据有序,可以重复。  
 
 B  
 
 不可变 Array 的不可变指的是堆内存中 Array 对象指向的数据  
 
 对象的地址不可变。  
 
 C  
 
 不可变 Array 中的元素不论通过怎样的操作都无法进行修  
 
 改。  
 
 D  
 
 不可变 Array 中的元素可以进行修改。  
 
 答案:  
 
 1=>C 
 
121.不可变数组三

122.不可变数组四

123.可变数组一

 package  com . itbaizhan . chapter07  
 
 import  scala . collection . mutable . ArrayBuffer  
 
 // 可变数组  
 
 object  ArrayBufferDemo  extends  App  {  
 
 
 //TODO 1. 可变数组实例化  
 
 
 val  arrbuf1  =  ArrayBuffer ( 'a' , 'b' , 'c' , 'd' )  
 
 
 val  arrbuf2  =  ArrayBuffer ( 'u' , 'v' , 'w' , 'x' )  
 
 
 //TODO 2. 添加元素,原数组改变,并返回改变后的数组  
 
 
 val  arrbuf3 :  ArrayBuffer [ Char ]  =  arrbuf1  +=  
 
 'e'  
 
 
 println (  arrbuf1 eq arrbuf3  )  // true  
 
 
 arrbuf1 . append ( 'f' , 'g' ) // 可以添加一个,也可以同时  
 
 添加多个元素  
 
 
 //TODO 3. 修改元素 如下两种方式等价  
 
 
 arrbuf1 ( 0 ) =  'A'  
 
 
 arrbuf1 . update ( 0 , 'A' )  
 
 
 println ( " 修改后: " + arrbuf1 . mkString ( "," ))  
 
 
 //TODO 4. 删除元素  
 
 
 
 
 //arrbuf1.remove(5)// 删除下标为 5 的元素 
 
124.可变数组二


125.可变数组和不可变数组转换
 可变数组和不可变数组转换  
 
 集合常用方法  
 
 基础方法  
 
 package  com . itbaizhan . chapter07  
 
 import  scala . collection . mutable  
 
 import  scala . collection . mutable . ArrayBuffer  
 
 object  ArrayTransformer  extends  App  {  
 
 
 val  buffer :  ArrayBuffer [ Int ]  =  ArrayBuffer ( 1 ,  
 
 2 ,  3 )  
 
 
 // 将可变数组转化为不可变数组  
 
 
 val  array :  Array [ Int ]  =  buffer . toArray  
 
 
 // 将不可变数组转化为可变数组  
 
 
 val  buffer1 :  mutable . Buffer [ Int ]  =  
 
 array . toBuffer  
 
 
 // 数组转 List  
 
 
 val  list :  List [ Int ]  =  array . toList  
 
 
 val  list1 :  List [ Int ]  =  buffer . toList  
 
 
 // 数组转 Set  
 
 
 val  set :  Set [ Int ]  =  array . toSet  
 
 
 val  set1 :  Set [ Int ]  =  buffer . toSet  
 
 
 // 数组转 Seq  
 
 
 val  seq :  Seq [ Int ]  =  array . toSeq  
 
 
 val  seq1 :  Seq [ Int ]  =  buffer . toSeq  
 
 }  
 
 package  com . itbai 
 
126.集合常用方法_基础方法

127.集合常用方法_衍生方法一


128.集合常用方法_衍生方法二


129.集合常用方法_计算方法一

130.集合常用方法_计算方法二


131.集合常用方法_折叠方法


132.集合常用方法_功能方法map一



133.集合常用方法_功能方法map二

134.集合常用方法_功能方法flatten


135.集合常用方法_功能方法flamap


136.集合常用方法_单词数量统计一

137.集合常用方法_单词数量统计二

138.集合常用方法_单词数量统计三

8.模式匹配
139.swichi回顾


140.基本使用

141.匹配规则_匹配常量

142.匹配规则_匹配类型

143.匹配规则_匹配类型二

144.匹配规则_匹配数组

145.匹配规则_匹配元祖

146.匹配规则_匹配列表
 匹配列表  
 
 package  com . itbaizhan . chapter08  
 
 object  CaseList  extends  App  {  
 
 
 for  ( list  <-  Array ( List ( 0 ),  
 
 
 List ( 1 ,  0 ),  List ( 0 ,  1 ),  
 
 
 List ( 0 ,  0 ,  0 ),  
 
 
 List ( 2 ,  0 ,  1 ), List ( 6 ))) {  
 
 
 val  result  =  list  match  {  
 
 
 //TODO 1. 匹配 List(0), 一个元素并且值为 0 的 List  
 
 
 case  List ( 0 )  =>  "0"  
 
 
 //TODO 2. 匹配有两个元素的 List  
 
 
 case  List ( x ,  y )  =>  x  +  "@"  +  y  
 
 
 //TODO 3. 匹配三个三个以上元素并且第一个元素为 0  
 
 的 List 集合  
 
 
 case  List ( 0 ,  _ * )  =>  "0 ..."  
 
 
 case _  =>  "other list"  
 
   }  
 
 
 println ( result )  
 
 }  
 
 
 val  list :  List [ Int ]  =  List ( 1 ,  2 ,  3 , 4 , 5 ) //1-2-  
 
 List(3, 4, 5)  
 
 
 //val list: List[Int] = List(1, 2)//1::2::Nil  
 
 =>1-2-List()  
 
 
 list  match  {  实时效果反馈  
 
 1.  关于 Scala 匹配列表代码的描述,错误的是:  
 
 A  
 
 case List(0) => "0"  
 
 匹配一个元素并且值为 0 的 List 。  
 
 B  
 
 case List(x, y) => x + "@" + y  
 
 匹配有两个元素的列表,然后将元素值  
 
 赋给对应的 x 和 y 然后拼接字符串。  
 
 C  
 
 case List(0,  
 
 _ 
 
 *)  
 
 匹配三个或三个以上元素并且第一个元素为 0 的  
 
 List 集合。  
 
 D  
 
 case one :: two :: rest => println(one + " - " + two + " - " + rest)  
 
 匹配有两个或两个  
 
 以上的 List 集合, one 代表第一个元素, two 代表第二个元素, rest  
 
 代表剩余元素组成的 List 集合。  
 
 答案:  
 
 1=>C  单独看该分支表示匹配第一个元素为 0 的列表,不管该列  
 
 表几个元素。 
 
147.匹配规则_匹配对象

148.匹配规则_样例类

149.应用场景一

150.应用场景二


151.应用场景_升级WORDcount

152.偏函数_全量函数实现偏函数场景一

153.偏函数_全量函数实现偏函数场景二

154.偏函数_声明和使用


9.隐式转换
155.隐式转换概述

156.隐式函数


157.隐式参数和隐式变量一


158.隐式参数和隐式变量二


159.隐式类




160.隐式转换机制

10.泛型
161.泛型概述


162.泛型斜边和逆变


163.泛型的上下边界

164.常用方法中的泛型


165.上下文限定

11.正则表达式
166.正则表达式概述

167.正则表达式基本使用


168.正则案例实战

二.Kafka队列
1.课程介绍
2.kafka入门_什么是kafka

3.kafka入门_消息队列应用场景

4.kafka入门_消息队列两种模式











