2017-03-01 2 views
0

ist Ich bin sehr neu zu groovy so bitte entschuldigen, wenn es eine dumme Frage ist.Springe zur nächsten Schleife, wenn die Bedingung in groovy

Ich analysiere eine XML-Datei und hole die Namen der Früchte in eine Liste. Mein unvollständiger Codeausschnitt unten.

.... 
.... 
def xmlOutput = proc.in.text 
def lists = new XmlSlurper().parseText(xmlOutput) 
def listOffruits = lists.fruits.entry.name 

//Below is the fuit list for which I want to skip the loop 
def myList = ["orange", "apple", "banana", "grapes"] 

listOffruits.each(){ 
    def fruitName = it.text() 
    //Not sure how on the logic 
println "- found Fruit Name not on the list'${fruitName }'" 
} 

Ich möchte überprüfen/vergleichen, wenn die Frucht Name in der Liste vorhanden ist - „myList“, falls vorhanden die Schleife überspringen oder zum nächsten Iterator weitergehen, wenn sie nicht mit der Schleife fortgesetzt.

Ich bin mir nicht sicher, wie genau es zu erreichen ist. Irgendwelche Vorschläge pls. Vielen Dank.

+1

Mögliche Duplikat http: // Stackoverflow. com/questions/3049790/break-from-groovy-jeder-Schließung –

+0

@Nitesh, Danke, aber ich möchte jeden Wert von list vergleichen - listOffruits zu den Werten in der anderen Liste - myList. – voltas

Antwort

2

können Sie findAll verwenden, um nur die Frucht zu halten nicht in der Liste ...

def unfoundFruits = listOffruits.findAll { f -> !myList.contains(f) } 
unfoundFruits.each { f -> 
    println "- found Fruit Name not on the list '${f}'" 
} 
+0

Arbeitete wie ein Zauber, danke für die Einführung in die findAll Methode. Vielen Dank!! – voltas

1

Sie Collection#minus verwenden können, zum Beispiel:

def listOffruits = ["pineapple", "apple", "strawberry", "grapes"] 
def myList = ["orange", "apple", "banana", "grapes"] 
println "Fruits not on the list: ${listOffruits.minus myList}" 
Verwandte Themen