gpt4 book ai didi

java - 使用键将对象数组转换为数组对象

转载 作者:行者123 更新时间:2023-11-30 02:20:38 25 4
gpt4 key购买 nike

我当前的结构:

input:
[
{A:A1, B:B1, C:C1, D:D1, E:E1, F:F1, G:G1, H:H1},
{A:A2, B:B2, C:C2, D:D2, E:E2, F:F2, G:G2, H:H2},
{A:A3, B:B3, C:C3, D:D3, E:E3, F:F3, G:G3, H:H3}
...
]

我的目标:

output
[
{"A":[A1, A2, A3 ...]},
{"B":[B1, B2, B3 ...]},
{"C":[C1, C2, C3 ...]},
{"D":[D1, D2, D3 ...]},
{"E":[E1, E2, E3 ...]},
{"F":[F1, F2, F3 ...]},
{"G":[G1, G2, G3 ...]},
{"H":[H1, H2, H3 ...]}
]

其中“A”、“B”、“C”...是原始对象中的文字键,它们现在是对象中指向其类型的所有值的数组的键。这通常很简单,除了我需要始终维护 key

这是我到目前为止所尝试过的,但我不确定我的循环结构是否正确。

def ArrayList invertReponse(ArrayList input){

def output = new ArrayList()

for(i=0;i<input[0].size();i++){

def tempObj = {}
def j=0
input[0].each{ key, value ->
tempObj[[input][0][i]][j] = value
j++
}
output.push(tempObj)
}
return output
}

最佳答案

根据您对输入所做的假设,您可能希望从以下内容开始:

def input = [[A:'A1', B:'B1', C:'C1'],
[A:'A2', B:'B2', C:'C2'],
[A:'A3', B:'B3', C:'C3']]

def result = input.inject([:]) { map1, map2 ->
(map1.keySet() + map2.keySet())
.inject([:]) {m, k -> m[k] = (map1[k] ?: []) + (map2[k] ?: []); m}
}

结果最终将是[A:[A1, A2, A3], B:[B1, B2, B3], C:[C1, C2, C3]].

希望对您有所帮助。

编辑:

重新阅读问题后,我现在发现您真正想要的结果是一个包含一堆 Map 的 List,每个 Map 中只有 1 个键。这可能更接近你想要的......

def input = [[A:'A1', B:'B1', C:'C1'],
[A:'A2', B:'B2', C:'C2'],
[A:'A3', B:'B3', C:'C3']]

def result = []
input.inject([:]) { map1, map2 ->
(map1.keySet() + map2.keySet())
.inject([:]) {m, k -> m[k] = (map1[k] ?: []) + (map2[k] ?: []); m}
}.each { k, v ->
result << [(k):v]
}

这样,结果将是[[A:[A1, A2, A3]], [B:[B1, B2, B3]], [C:[C1, C2,C3]]]

关于java - 使用键将对象数组转换为数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46941873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com