scenotaph:
例えば、我々はいくつかのフィールドを持つ単純なクラスを持っています。我々は「名前」と「ID」と呼ばれるフィールドを持っている、と仮定しましょう。そして、私はそのようなオブジェクトが存在しない場合は、指定されたIDを持つオブジェクトの名前を取得し、いくつかDEFAULTNAMEを返すようにしたいです:
private List<MyObject> myObjects;
public String findFieldById(int id) {
MyObject matchingObj = myObjects.stream()
.filter(m -> m.getId() == id)
.findFirst().orElse(null);
return (matchingObj == null) ? "defaultName" : matchingObj.getName();
}
私の質問は、私は簡単にはnullで、このチェックを行うことができる方法である1つのラインの流れの中?
Ousmane D .:
あなたはへのマッピングによって1つのパイプラインにこのタイプの動作を実行することができMyObject::getName
た後、findFirst
それ以外を経由して、デフォルト値を提供しますorElse
。
return myObjects.stream()
.filter(m -> m.getId() == id)
.findFirst()
.map(MyObject::getName)
.orElse("defaultName");