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

时间:2013-07-01 09:31:55

标签: scala merge buffer

fig

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

更新或插入正在引用“id”attr。

有人可以告诉我如何在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
}

1 个答案:

答案 0 :(得分:0)

如果您想使用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 Map

import scala.collection._

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

oldBuf ++= newBuf

所以没有区别。

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