我想執行復制並獲取兩個不同的對象,以便我可以在不影響原始文件的情況下處理副本。複製groovy中的列表清單
我有此代碼(常規2.0.5):
def a = [[1,5,2,1,1], ["one", "five", "two", "one", "one"]]
def b = a
b.add([6,6,6,6,6,6])
println a
println b
產生:
[[1, 5, 2, 1, 1], [one, five, two, one, one], [6, 6, 6, 6, 6, 6]]
[[1, 5, 2, 1, 1], [one, five, two, one, one], [6, 6, 6, 6, 6, 6]]
好像b和a實際上是相同的對象
我可以修復它通過這種方式:
def a = [[1,5,2,1,1], ["one", "five", "two", "one", "one"]]
def b = []
a.each {
b.add(it)
}
b.add([6,6,6,6,6])
println a
println b
產生我想要的結果:
[[1, 5, 2, 1, 1], [one, five, two, one, one]]
[[1, 5, 2, 1, 1], [one, five, two, one, one], [6, 6, 6, 6, 6]]
但是現在看看這個,在這裏我要原來的對象,並用獨特的副本,並進行排序元素:
def a = [[1,5,2,1,1], ["one", "five", "two", "one", "one"]]
def b = a
b.each {
it.unique().sort()
}
println a
println b
產生:
[[1, 2, 5], [five, one, two]]
[[1, 2, 5], [five, one, two]]
如果我這次嘗試相同的修復程序,它不起作用:
def a = [[1,5,2,1,1], ["one", "five", "two", "one", "one"]]
def b = []
a.each {
b.add(it)
}
b.each {
it.unique().sort()
}
println a
println b
仍可產生:
[[1, 2, 5], [five, one, two]]
[[1, 2, 5], [five, one, two]]
這是怎麼回事?
編輯標題,因爲這些列表,而不是陣列 –