uple拉链操作

    实际就是将两个Array合并成一个Tuple,通过Array的zip()方法实现,这里需要注意,两个数组的长度要一致,不然会丢数据:

代码实例:

package com.hadoop.ljs.spark.study
/**  * @author: Created By lujisen  * @company ChinaUnicom Software JiNan  * @date: 2020-02-08 19:59  * @version: v1.0  * @description: com.hadoop.ljs.spark.study  *//*Array数组的zip()方法可将两个数组合并成一个tuple*/object TupleZip {  def main(args: Array[String]): Unit = {    val  nameArray=Array("ljs1","ljs2","ljs3")
   val  nameArray2=Array("ljs1","ljs2","ljs3","ljs4")    val  ageArray=Array(17,18,19)    val nameAgeArray=nameArray.zip(ageArray)
   println("两个数组元素相同")    nameAgeArray.foreach{      x=>println("姓名:"+x._1+"  年龄"+x._2)    }
   println("两个数组元素不同")    val nameAgeArray2=nameArray2.zip(ageArray)    for((name,age)<-nameAgeArray2){      println("姓名:"+name+"  年龄"+age)    }
   /*如果Array元素是一个Tuple,可直接调用Map(),转换成Map*/    val  nameAgeMap=nameAgeArray.toMap
   println("转化成Map")    println(nameAgeMap)  }}

    从代码可看出,当两个Array长度不一致时,只保留了对应的数据,后面多的数据直接丢弃了。





    由于都运行在JVM上,Java与Scala之间基本能做到无缝的集成,区别主要在于各自的API各有不同。由于Scala为集合提供了更多便捷的函数,因此,Java与Scala在集合之间的互操作,或许是在这种多语言平台下使用最为频繁的。

Scala中操作Java集合

    两种情况需要在Scala中操作Java集合。一种是Scala调用了其他的Java库,针对Java集合需要转换为Scala集合,如此才能享受Scala集合提供的福利;另一种是编写了Scala程序,但需要提供给Java库,为了更好地无缝集成,要让Java库体会不到Scala的存在。


JavaMap和ScalaMap隐式转换,

代码实例:

package com.hadoop.ljs.spark.study
import java.util
/**  * @author: Created By lujisen  * @company ChinaUnicom Software JiNan  * @date: 2020-02-08 20:23  * @version: v1.0  * @description: com.hadoop.ljs.spark.study  JavaMap和Scala隐式转换  */
import  scala.collection.JavaConversions.mapAsScalaMapobject JavaMapImplicitScalaMap {
 def main(args: Array[String]): Unit = {
   val  javaMap=new util.HashMap[String,Int]()    javaMap.put("ljs1",17)    javaMap.put("ljs2",18)    javaMap.put("ljs3",19)
   val scalaMap:scala.collection.mutable.Map[String,Int]=javaMap
   println(scalaMap)

   import scala.collection.JavaConversions.mapAsJavaMap
   val scalaAttrMap = Map("ljs4" -> 20, "ljs5"->22)
   val javaMap2 = new util.HashMap[String,Int](scalaAttrMap)
   println(javaMap2)  }}