如何在scala中将新缓冲区合并到旧缓冲区?
刷新时,我尝试将新数据合并到旧缓冲区 更新或插入正在根据“id”属性进行 有人能告诉我在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
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方法返回