2012-09-30 1 views
0

나는 성공하지 못하고이 방법을 사용하려고 노력하고 있습니다. 누군가 나를 도울 수 있다면 행복 할 것입니다. groovy를 사용 중이며 2 개의 문자열지도가 있습니다. 예 : def firstMap = [ "a", "b": "B"] def secondMap = [ " C ":"C ","A ": A"나는 gpars 스레드와 함께 할 할 Gpars runForkJoin 및 forkOffChild 메소드에 대해 방법

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

에]지도 사이 equale하는

일반적인 방법은 그래서 시도입니다 :

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

나는 이것과 함께 새로운 종류의 나는 정말 어떻게 해야할지 모르겠다. rk. 나는 어떤 도움을 주셔서 감사합니다. 감사합니다. 또는. 내가 병렬 컬렉션을 사용하는 게 좋을 것 무엇

+0

더 좋은 방법은'firstMap.findResult이다 {FK, FV -> secondMap.findResult {SK, SV -> fk == sk && fv == sv? [(fk) : fv] : null}}' –

답변

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 } } 
} 
+0

고맙습니다! 당신은 나를 많이 도왔습니다! – ork