如何在scala中将新缓冲区合并到旧缓冲区?

如何在scala中将新缓冲区合并到旧缓冲区?,scala,merge,buffer,Scala,Merge,Buffer,刷新时,我尝试将新数据合并到旧缓冲区 更新或插入正在根据“id”属性进行 有人能告诉我在scala怎么做吗 def merge(oldBuf: Buffer[java.util.Map[String, Value]], newBuf: Buffer[java.util.Map[String, Value]]) { // loop newBuffer{ // val item = newBuf(n) // val id = item

刷新时,我尝试将新数据合并到旧缓冲区

更新或插入正在根据“id”属性进行

有人能告诉我在scala怎么做吗

def merge(oldBuf: Buffer[java.util.Map[String, Value]], newBuf: Buffer[java.util.Map[String, Value]]) { 
      // loop newBuffer{
             // val item = newBuf(n)
             // val id = item.get("id")   
             // if same id found in oldBuf:
             //    update new [Value] to the old item in oldBuf
             // else (can not found this id in oldBuf)
             //    add this new item to oldBuf 
        //}
          return oldBuf
}

如果要使用Java的
Map
,请尝试
putAll

import java.util

object Buf extends App {
  val oldBuf = new util.HashMap[Int, String]()
  oldBuf.put(1, "1")
  oldBuf.put(2, "2")
  oldBuf.put(3, "3")
  oldBuf.put(4, "4")

  val newBuf = new util.HashMap[Int, String]()
  newBuf.put(4, "4 new")
  newBuf.put(5, "5")

  oldBuf.putAll(newBuf)
  println(oldBuf)
}
如果您有Scala
地图

import scala.collection._

val oldBuf = mutable.Map("a" -> 1, "b" -> 2)
val newBuf = immutable.Map("a" -> 3, "c" -> 4)

oldBuf ++= newBuf
所以没有区别


一般来说,我建议在开始使用Scala处理之前(如果您的长期目标是替换所有Java代码),将任何Java集合转换为Scala集合。如果您在算法中使用Scala中的Java集合,它们可能会永远留在那里。

请为
缓冲区添加源代码。缓冲区真的由Java
映射参数化了吗?使用Java的映射有什么原因吗?两个
缓冲区的长度是否相同,元素是否排列成一行,以便
newBuffer(0)
只需查看
oldBuffer(0)
在评估是否应该更新或插入缓冲区,或者是否需要为每次newBuffer迭代扫描整个旧缓冲区?oldBuf和newBuf的长度不同,请使用Java Map cas,并通过Java方法返回