25

Simple question that I haven't been able to find a simple answer for on the googles: what is the difference between Groovy's each and forEach loops?

I made a simple example and the syntax and behavior seem identical:

    [1, 2].each { println it }
    [1, 2].forEach { println it }

Both print:

1
2

The only example I see of both in the Groovy Language Documentation seems to touch on the difference between lambdas and closures, but I can't relate that to the examples I've tried.

Thank you

orbfish
  • 7,381
  • 14
  • 58
  • 75

1 Answers1

49

The first distinction between each() and forEach() is that each() is provided by Groovy's GDK, while forEach() is provided by Java 8 (so it is not available in prior versions of Java.

Another difference is that each() accepts a Groovy closure while forEach() accepts a Consumer. From Groovy, this difference is not noticeable because Groovy transparently coerces the closure to a Consumer.

Emmanuel Rosa
  • 9,697
  • 2
  • 14
  • 20