Posted at

【Java】Stream API/map

オブジェクト内の全ての要素を変換するメソッド

public class Fruit {

public static void main(String[] args) {

List<String> list = new ArrayList<>();
list.add("apple");
list.add("orange");
list.add("banana");

List<String> ret = list.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());
ret.forEach(System.out::println);
}
}

//出力結果は要素が大文字になる

(.collect(Collectors.toList());はListで返すためにつけてる)

ラムダ式を使わなければ以下のようになる。

        List<String> ret = list.stream().map(new Function<String,String>(){

@Override
public String apply(String s) {
System.out.println(s);
return s.toUpperCase();
}
}).collect(Collectors.toList());

map()は引数にFunctionを持つ

インタフェースFunction

T…引数の型

R…戻り値の型

applyがいきなりつかえるのは何故か?

インターフェイスFunctionの中にはapplyしかメソッドがないため(defaultは無視される)