トッカンソフトウェア

Stream


StreamはJava8で導入された新しい記述方法です。
ラムダ式と組み合わせて、少ない記述で処理が書けるようになります。


Streamを使って、リストの中身を出力

リストなどに.stream()を付けるとストリームの処理を行うことができます。
以下のサンプルでは、nullを外し、同じ値も外し、頭に"-"を付け、並び替え、頭の3データを出力しています。
				
import java.util.ArrayList;
import java.util.List;

public class Sort {

	public static void main(String[] args) {
		List<String> ary = new ArrayList<>();
		ary.add("1");
		ary.add("1");
		ary.add("3");
		ary.add("4");
		ary.add(null);
		ary.add("a");
		ary.add("0");

		ary.stream().filter(a -> a != null).distinct()
			.map(b -> "-" + b).sorted().limit(3).forEach(System.out::println);
	}
}


			
出力結果
				
-0
-1
-3
			

主なStreamでできる処理

メソッド 説明
filter 条件に合わないデータを外す
distinct 同じデータを外す
map データを編集
sorted ソートする。カッコの中に処理を書くことでソート条件を変えられる
limit 出力するデータを制限する
forEach for文で処理を回す。{}で複数行、処理が書ける。
System.out::println メソッド参照。メソッドの引数が同じ場合、引数を省略できる。

Mapの場合

Mapの場合、entrySetを使用する。
				
import java.util.HashMap;
import java.util.Map;

public class Sort {

	public static void main(String[] args) {

		Map<String, String> map = new HashMap<>();
		map.put("a", "1");
		map.put("b", null);
		map.put("c", "3");
		map.entrySet().stream().filter(ent -> ent.getValue() != null)
				.forEach(ent -> System.out.println(ent.getKey() + "-" + ent.getValue()));

	}
}


			


ページのトップへ戻る