Ich habe eine ziemlich große Sammlung, die ich iterieren und herausfinden möchte, ob die Sammlung mehr als eine Instanz einer bestimmten Nummer enthält. Da die Sammlung groß ist, würde ich gerne früher aufbrechen, d. H. Nicht die komplette Liste durchlaufen.Groovy/Scala - Abbrechen Früh während der Iteration mit einem Akkumulator
Ich habe ein schmutziges Stück Code, der dies in einer nicht-funktionalen Programmierung tut. Allerdings kann ich keine funktionierende Programmierung dafür finden (In Groovy oder Scala), da ich 2 Dinge gleichzeitig machen muss.
- Accumulate Zustand
- Ausfahrt Früh
Das geschehe „Zustand akkumulieren“ kann die „injizieren“ oder „fold“ Methoden in Groovy/Scala verwenden, aber es gibt keine Möglichkeit früh von denen der Austritt aus Methoden. Original groovy code ist unten. Irgendwelche Gedanken?
def collection = [1,2,3,2,4,6,0,65,... 1 million more numbers]
def n = 2
boolean foundMoreThanOnce(List<Integer> collection, Integer n) {
def foundCount = 0
for(Integer i : collection) {
if(i == n) {
foundCount = foundCount + 1
}
if(foundCount > 1) {
return true
}
}
return false
}
print foundMoreThanOnce(collection, n)