Java 8 - IntStream range的應用

之前曾經介紹過關於集合元件轉換成Stream with Lambda的操作,在這邊要帶到的是一些基本

的處理,如在不使用迴圈的情況下如何串接一組空字串,達到排版使用上的目的;再來就是

如何在使用forEach時可以取得index!

應用一:串接空字串
System.out.println("IntStream range 應用1");
String title = "Java Basic Lessons";
String intro1 = title+" --> variables";
String emptyStr = IntStream.range(0, title.length())
      .mapToObj(i -> " ")
      .collect(Collectors.joining(""));
String intro2 = emptyStr+" --> condition control, flow control";
  
System.out.println(intro1+"\n"+intro2);

串接空字串目的是為了排版的使用,如上!

在此要特別提到的是,title在第二行不需要再使用到了,但是為了要與上一行對齊,又不想

直接針對hard code做處理,又不想直接寫迴圈來串接.... 因此可以使用IntStream range,從0開

始到對應的長度(此為<,非<=),再來關鍵的地方就是轉換當下的index成" "空字串,可以使用

mapToObj。最後就是蒐集當下的stream做join串接的動作即大功告成!

應用二:forEach取得index
System.out.println("IntStream range 應用2");
String sports[] = {"jogging", "badminton", "both"};
String bodys[]  = {"feet", "hand", "feet and hand"};
IntStream.range(0, sports.length).forEach(index -> {
 System.out.println(sports[index]+" can train "+bodys[index]);
});

這邊要提到的是forEach在使用上蠻方便的,可以省略一般迴圈走訪時index的宣告!

但是有時候還真的有需要使用到它! 因此又要搬出range了!

DEMO如下


留言