10月末からJava8を使い始めたのでよく書いた/レビューしたラムダ式をまとめる。他にもあったかもしれない
ラムダ対象にするクラス
MasterData.java
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
@Data
@AllArgsConstructor
class MasterData {
private int id;
private String name;
private Date start;
private Date end;
private int sort;
}
条件でフィルタ
long now = new Date().getTime();
List<MasterData> filtered = list.stream()
.filter(masterData -> masterData.getEnd().getTime() > now)
.collect(Collectors.toList());
最初の1件取得
MasterData findOne = list.stream()
.filter(masterData -> masterData.getId() % 2 == 0)
.findFirst().get();
ソート
List<MasterData> sorted = list.stream()
.sorted(Comparator.comparing(MasterData::getSort))
.collect(Collectors.toList());
特定のプロパティだけ抜き取る
List<String> names = list.stream()
.map(MasterData::getName)
.collect(Collectors.toList());
最大を求める
MasterData max = list.stream()
.max(Comparator.comparing(MasterData::getSort))
.get();