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 に答える