ストリームAPIを使用して、どのようにリターンヌル?

ローマ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ヌルを返すだけどの要素が保持されていない起こります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=182934&siteId=1