ローマShmandrovskyi:
だから、私はArrayList
自動生成された文字列のを。私は別のフィルタを適用するには、このフィルタに一致する誰要素が存在しない場合、一部の文字や、他が含まれている最初の要素を見つけたいです。別の方法では、私は返すようにしたいnull
オブジェクトを。
だから私は、このラムダ式を記述します。
str.stream()
.filter(s -> s.contains("q"))
.findFirst()
.orElseGet(() -> str.stream()
.filter(s -> s.contains("w"))
.findFirst()
.orElseGet(null))
しかし、私はNullPointerExceptionがあります。この2つのフィルタを一致する誰要素が存在しない場合。:どのように、私のような何かを得ることができますかreturn null
?
ernest_k:
追加の、単純なアプローチ:あなたが含む文字列でフィルタリングすることができq
たりw
、その後、ソート含むものに移動するq
オプションが空の場合、最初の発見、最初にnullを返します:
str.stream()
.filter(s -> s.contains("q") || s.contains("w"))
.sorted((s1, s2) -> s1.contains("q") ? -1 : 1 )
.findFirst()
.orElse(null);
.sorted((s1, s2) -> s1.contains("q") ? -1 : 1 )
含む文字列移動します"q"
最初に。ストリームのいずれかを含む値にのみフィルタリングされたのでq
、またはw
ヌルを返すだけどの要素が保持されていない起こります。