我有两个由字符串组成的列表,两个都是immmutable:
def list1 = [ "A", "B", "C" ]
list2 = ["D", "E", F"]
我自己制作的自定义函数返回了List 2。有没有办法获取这两个不可变列表并将它们的两个元素与注入组合?我尝试了很多组合而没有成功。我已经广泛搜索了这个。我无法将其更改为可变列表。我知道简单地组合两个列表然后使它们不可变会容易得多,但是,这不是我的目标。
以下是所需的输出:
[ "A", "B", "C", "D", "E", F"]
此处的解决方案将用于解决更大的问题。我只是将其简化为基本情况。
谢谢。
编辑:我必须使用inject方法。我知道我可以简单地使用+或循环遍历每个列表以获得所需的结果。这严格限于在Groovy中使用.inject。
答案 0 :(得分:1)
//Set as Immutable
def list1 = ["A", "B", "C"].asImmutable()
def list2 = ["D", "E", "F"].asImmutable()
//Supports Immutablity
try {list1 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
try {list2 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
//Desired result using "inject"
def result = list2.inject(list1){init, val -> [init] << val}.flatten()
assert result == ['A', 'B', 'C', 'D', 'E', 'F']
//Immutable Test
assert list1 == ["A", "B", "C"]
assert list2 == ["D", "E", "F"]
//Supports Immutablity after operation
try {list1 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}
try {list2 << 'Z'} catch(e){assert e instanceof UnsupportedOperationException}