レガシーマンなので、Java8から導入されたというStreamパッケージを生まれて初めて使った。
確かどこかで聞いた説明で「ラムダ式はStremパッケージのおまけ」と話してたのでかろうじて記憶に残ってた。
処理としては、Beanオブジェクトに入ってるフィールド(プロパティ)Aの重複を除外して件数を判定する。
レガシーマンのコード
public class AbcInfo {
private String id;
private String name;
~ getter & setter 略 ~
}
public class AbcServiceImpl implement AbcService {
~ 略 ~
protected boolean isOneName(List<AbcInfo> abcList) {
// -------------------------------------------------------
// nameの文字列が1種類か判定する。
// -------------------------------------------------------
// nameのみ抽出する。
List<String> nameList = new ArrayList<String>();
for(AbcInfo abc : abcList) {
nameList.add(abc.getName);
}
// nameの重複を排除する
List<String> list = new ArrayList<String>(new HashSet<>(nameList));
if(list.size() == 1) {
return true;
}
return false;
}
}
Streamパッケージ使ったコード
public class AbcInfo {
private String id;
private String name;
~ getter & setter 略 ~
}
public class AbcServiceImpl implement AbcService {
~ 略 ~
protected boolean isOneName(List<AbcInfo> abcList) {
// nameの文字列が1種類か判定する。
long nameCount = abcList.stream()
.map(info -> info.getName())
.distinct()
.count();
if(nameCount == 1) {
return true;
}
return false;
}
}