Groovy 要为每个映射键生成一个列表作为遍历列表?

Groovy 要为每个映射键生成一个列表作为遍历列表?,groovy,syntax,Groovy,Syntax,我有一个映射,我需要在groovy中向每个映射键插入一个生成的列表,因为我正在遍历一个列表 代码: def myMap = [:] anotherList.each{ object -> //here i do some work to get two elements def element1 = .. def element2 = .. // so here i need to generate a list for the two eleme

我有一个映射,我需要在groovy中向每个映射键插入一个生成的列表,因为我正在遍历一个列表

代码:

def myMap = [:]
    anotherList.each{
    object -> //here i do some work to get two elements
    def element1 = ..
    def element2 = ..

    // so here i need to generate a list for the two elements with index 0 and 1
    myMap[obejct]= ['list', my list] 
    }
   return myMap

您可以使用
[key:value]
符号创建映射。由于您的值是由两个元素组成的数组,您只需使用
[element1,element2]
符号创建它,然后您就可以使用将对象添加到地图中


因此,这个
myMap您可以使用方法
collect
遍历您的列表并生成另一个列表,其值取决于原始列表(此方法中使用的推理取决于您。下面是一个小示例:

    def originalList = [1,2,3]
    def result = originalList.collect{obj->
        def e1 = obj
        def e2 = obj*2
        [e1,e2]
    }
    println result //[[1,1],[2,4],[3,6]]
编辑:抱歉,我忽略了这样一个事实,即您希望得到一个映射。这里有一种类似于上述方法的方法。在这种情况下,您可以使用
每个
遍历列表中的元素:

def originalList = [[name: 'franz', age: 12], [name: 'bepi', age: 20],[name: 'giovanni', age: 65]]
def result=[:]
originalList.each{obj->
    def e1 = obj.age
    def e2 = obj.age*2
    result.put(obj, [e1,e2]) //key, value
}
println result //[[name:franz, age:12]:[12, 24], [name:bepi, age:20]:[20, 40], [name:giovanni, age:65]:[65, 130]]

谢谢你的帮助!我只需要在列表中的特定索引中定义元素!这样我就可以根据每个元素的index@Mich对不起,我误解了您的要求。您的意思是什么?使用索引而不是
“$object”
作为您在地图中的键?我的意思是在用作地图值的两个元素列表中!一个元素应该具有索引0,另一个元素具有索引1可能有点混淆,我混淆了您!在第一种方法中,元素1和元素2在该列表中是否具有固定索引?@albciff如果您需要使用对象对地图进行索引(不仅仅是对象的toString值,包装在GString中),您应该使用[(对象):[element1,element2]].我不知道他们从那以后是否在groovy中解决过这个问题,但在映射中使用GString作为键曾经是一种罪恶,因为GString不是不可变的,它们的哈希代码可能会不同。你想要什么作为结果映射的键?你能给出一个示例输入吗?你能给出一个示例输出吗?没有这些,每个人都在猜测如果你看我的代码,那么这个对象就是映射的键,生成的两个元素的列表就是值,那么从这个问题中你到底希望得到什么答案!不幸的是,我仍然不明白你想说什么。
    def originalList = [1,2,3]
    def result = originalList.collect{obj->
        def e1 = obj
        def e2 = obj*2
        [e1,e2]
    }
    println result //[[1,1],[2,4],[3,6]]
def originalList = [[name: 'franz', age: 12], [name: 'bepi', age: 20],[name: 'giovanni', age: 65]]
def result=[:]
originalList.each{obj->
    def e1 = obj.age
    def e2 = obj.age*2
    result.put(obj, [e1,e2]) //key, value
}
println result //[[name:franz, age:12]:[12, 24], [name:bepi, age:20]:[20, 40], [name:giovanni, age:65]:[65, 130]]