0

私はこれらの方法をうまく利用しようとしていますが、誰かが私を助けてくれれば幸いです。私はgroovyを使用していて、文字列のマップが2つあります。2つのマップの文字列をスレッドで照合したい(gparsを使用)例: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 に答える