基于3元素元组与额外对象创建4元素元组的Scala技术问询
解决Scala中3元素元组扩展为4元素元组的问题
嘿,这个需求其实很好实现,咱们直接用Scala的元组解构和模式匹配就能搞定!下面分两种场景给你具体的代码示例:
场景1:检查单个特定键是否存在,再生成新元组
如果你只需要针对某个特定的key做处理,可以这样写:
val targetKey = "your-target-key" // 先从obj1中获取对应的3元组,存在的话就解构并组合成4元组 obj1.get(targetKey).foreach { case (arr1, arr2, arr3) => // 替换成你实际要添加的第四个Object实例 val fourthObj: Object = new Object() combJoinedMap(targetKey) = (arr1, arr2, arr3, fourthObj) }
场景2:批量处理所有3元组,生成对应的4元组
如果要把obj1里所有的3元组都扩展成4元组存入combJoinedMap,直接遍历即可:
// 如果每个key对应的第四个元素是同一个对象,就提前定义好 val sharedFourthObj: Object = new Object() obj1.foreach { case (key, (arr1, arr2, arr3)) => // 每个key对应不同的第四个元素的话,就在这里单独创建 // val uniqueFourthObj: Object = new Object() combJoinedMap(key) = (arr1, arr2, arr3, sharedFourthObj) }
额外提示:避免覆盖已有键值对
如果你不想覆盖combJoinedMap中已经存在的键,可以用putIfAbsent方法代替直接赋值:
obj1.get(targetKey).foreach { case (arr1, arr2, arr3) => val fourthObj = new Object() combJoinedMap.putIfAbsent(targetKey, (arr1, arr2, arr3, fourthObj)) }
核心思路就是利用Scala的模式匹配case (arr1, arr2, arr3)把3元组的三个元素解构出来,然后直接和第四个元素拼接成新的4元素元组,操作起来非常简洁~
内容的提问来源于stack exchange,提问作者anurag1007
相关产品推荐
相关产品推荐

