Skip to content

Instantly share code, notes, and snippets.

@bvlion
Last active July 20, 2017 08:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bvlion/7984734b70666173f60c287f50a26931 to your computer and use it in GitHub Desktop.
Save bvlion/7984734b70666173f60c287f50a26931 to your computer and use it in GitHub Desktop.
「今さらJava8のStreamとLambdaの関係」の資料用
import java.util.function.Function;
import java.util.stream.Stream;
public class Main {
public static void main(String... args) {
// これまでのJavaのように書くと、こんな感じになります。
Function<String, Integer> fullFunction = new Function<String, Integer>() {
@Override
public Integer apply(String arg) {
return Integer.parseInt(arg);
}
};
// 上のをLambdaで書くとこうなります。
Function<String, Integer> lambdaFunction = arg -> {
return Integer.parseInt(arg);
};
// 1行で返せる場合、括弧を省略できます。
Function<String, Integer> lambdaOneLineFunction = arg -> Integer.parseInt(arg);
// さらにメソッド参照機能を使うとこうなります。
Function<String, Integer> fullLambdaFunction = Integer::parseInt;
// 型が変換されているか確認してみましょう!
Stream.of("1234").map(fullLambdaFunction).map(Object::getClass).forEach(System.out::println);
// わざわざFunction型を定義しなくても「Object::getClass」のように書けますね♪
// 上のをJava7で書くとこうなります。
String[] datas = {"1234"};
for (String data : datas) {
Integer integer = Integer.parseInt(data);
Class<?> objectClass = integer.getClass();
System.out.println(objectClass);
}
Stream.of("1234").map(Integer::parseInt).map(Object::getClass).forEach(System.out::println);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment