古 (いにしえ) の「for ループ」や「Iterator」から、Java 8 の「ラムダ式」や「メソッド参照」までを使って、List の要素を出力するサンプルプログラムを書いてみた。
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
public class Hoge{
public static void main(String[] args){
final List<String> names =
Arrays.asList("Alice", "Bob", "Carol");
// for ループ
System.out.println("[for loop]");
for(int i=0; i<names.size(); i++){
System.out.println(names.get(i));
}
// Iterator
System.out.println("[Iterator]");
for(Iterator it=names.iterator(); it.hasNext();){
System.out.println(it.next());
}
// Iterator (Java 5)
System.out.println("[Iterator (Java 5)]");
for(String name : names){
System.out.println(name);
}
// Iterable#forEach and Consumer#accept 匿名内部クラス
System.out.println("[Iterable#forEach and Consumer#accept]");
names.forEach(new Consumer<String>(){
public void accept(final String name){
System.out.println(name);
}
});
// Iterable#forEach and ラムダ式
System.out.println("[Iterable#forEach and Lambda expression]");
names.forEach((final String name) -> System.out.println(name));
// Iterable#forEach and ラムダ式
System.out.println("[Iterable#forEach and Lambda expression]");
names.forEach((name) -> System.out.println(name));
// Iterable#forEach and ラムダ式
System.out.println("[Iterable#forEach and Lambda expression]");
names.forEach(name -> System.out.println(name));
// Iterable#forEach and メソッド参照
System.out.println("[Iterable#forEach and Method Reference]");
names.forEach(System.out::println);
}
}
オライリーから出版されている書籍 Javaによる関数型プログラミング Java 8ラムダ式とStream が参考になった。
-
ref.
- Iterator (Java Platform SE 8 )
- Iterable (Java Platform SE 8 ) Iterable#forEach
- Consumer (Java Platform SE 8 ) Consumer#accept
- Lambda Expressions (The Java™ Tutorials > Learning the Java Language > Classes and Objects)
- Method References (The Java™ Tutorials > Learning the Java Language > Classes and Objects)
tags: java
Posted by NI-Lab. (@nilab)