在Groovy中转换一个困难的矩阵

时间:2014-07-22 02:19:01

标签: algorithm collections groovy

如何转置

u2:[g2,g3], u3:[g1,g2,g3], u1:[g1,g2]

进入

g1:[u1,u3], g2:[u1,u2,u3], g3:[u2,u3]
在Groovy中

1 个答案:

答案 0 :(得分:1)

使用injectwithDefault

def map = [u2:['g2','g3'], u3:['g1','g2','g3'], u1:['g1','g2']]

assert map.inject([:].withDefault{ [] }) { newMap, k, v -> 
    v.collect { newMap[it] << k }     
    newMap
} == ['g2':['u2', 'u3', 'u1'], 'g3':['u2', 'u3'], 'g1':['u3', 'u1']]