26

Groovyでマップのマップをディープコピーするにはどうすればよいですか? マップ キーは Strings または Ints です。値は、再帰的な方法で、文字列、プリミティブ オブジェクト、またはその他のマップです。

4

5 に答える 5

32

簡単な方法は次のとおりです。

// standard deep copy implementation
def deepcopy(orig) {
     bos = new ByteArrayOutputStream()
     oos = new ObjectOutputStream(bos)
     oos.writeObject(orig); oos.flush()
     bin = new ByteArrayInputStream(bos.toByteArray())
     ois = new ObjectInputStream(bin)
     return ois.readObject()
}
于 2012-10-31T10:03:26.667 に答える
9

私もこの問題にぶつかったばかりで、次のことがわかりました。

deepCopy = evaluate(original.inspect())

Groovy でのコーディングは 12 時間未満ですが、evaluate. また、上記はバックスラッシュを処理しません。これ:

deepCopy = evaluate(original.inspect().replace('\\','\\\\'))

します。

于 2013-07-30T22:35:24.553 に答える
4

私はあなたがそうしなければならないことを恐れていますclone。Apache Commons Lang SerializationUtilsを試してみてください

于 2012-10-31T09:49:20.563 に答える