我在刷新时尝试将新数据合并到旧缓冲区。
更新或插入正在引用“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
}
答案 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集合,它们可能会保持良好状态。