0

图

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

更新或插入是根据“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
}
4

1 回答 1

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 集合,它们可能会一直保留在那里。

于 2013-07-02T08:54:31.450 回答