0

我正在尝试使用这些方法但没有成功,如果有人可以帮助我,我会很高兴。我正在使用 groovy,我有 2 个字符串映射。我想用线程(由 gpars 使用)在 2 个映射的字符串之间进行匹配 例如:def firstMap = ["a":"A", "b":"B"] def secondMap = ["c":" C", "a":A"]

地图之间相等的正常方法是

fistMap.findAll().each { first ->
    secondMap.findAll.each { second ->
       if (first.key.equals(second.key) && (first.value.equlas(second.value))
         //saveItIntoArray
  }
}

我想用 gpars 线程来做,所以我尝试了:

withPool(2) {
    runForkJoin(firstMap) { task ->
      task.each {
         secondMap.each {
            //equals
        }
        forChild(?)
     }
  }
}

我对这个有点陌生,我真的不知道如何让它工作。我将不胜感激。谢谢,或者。

4

1 回答 1

2

我建议使用并行集合:

def firstMap = ["a":"A", "b":"B"]
def secondMap = ["c":"C", "a":"A"].asImmutable()
withPool{
    println firstMap.findAllParallel { fk, fv -> secondMap.findResult { sk, sv -> fk == sk && fv == sv ? [(fk):fv] : null } }
}
于 2012-10-01T05:56:09.517 回答