Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Creating Your Own Loop Structure in Java 8 Lambda

DZone's Guide to

Creating Your Own Loop Structure in Java 8 Lambda

· Java Zone
Free Resource

Learn how to troubleshoot and diagnose some of the most common performance issues in Java today. Brought to you in partnership with AppDynamics.

Java doesn't have an easy construct of repeat something N number of times. We can make a for loop of course, but many times we don't even care about the variable that we created in the loop. We just want repeat N times of some code and that's it. With the lambda available in Java 8, you may attempt something like this:

public class RepeatDemo {
  public static void main(String[] args) {
  // One liner repeat
  repeat(10, () -> System.out.println("HELLO"));

  // Multi-liners repeat
  repeat(10, () -> {
  System.out.println("HELLO");
  System.out.println("WORLD");
  });
  }
 
  static void repeat(int n, Runnable r) {
  for (int i = 0; i < n; i++)
  r.run();
  }
}


Probably not as eye pleasing or straight forward as the good fashion for-loop, but you do get rid of the unnecessary loop variable. Only if Java 8 would go extra mile and treat the lambda argument in method with sugar syntax, then we could have it something like the Scala/Groovy style, which makes code more smoother. For example:

  // Wouldn't this be nice to have in Java?
  repeat(10) {
  System.out.println("HELLO");
  System.out.println("WORLD");
  }

Hum....

Understand the needs and benefits around implementing the right monitoring solution for a growing containerized market. Brought to you in partnership with AppDynamics.

Topics:

Published at DZone with permission of Zemian Deng, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}