答えて
私は質問を誤解して:あなたはkey='ear'
か'war'
との最初の'deployableModuleKey'
を探している場合:
modules.stream().flatMap(e -> e.getArtifacts().stream())
.filter(e -> e.getType().equals("ear") || e.getType().equals("war"))
.findFirst().orGet(null);
あなたはkey = 'war'
でkey='ear'
または最後と最初'deployableModuleKey'
を検索する場合。おそらく二つの文が必要とされています2/8に
public static ModuleKey getDeployableModuleFromModulesList(List<Module> modules) {
Optional<ModuleKey> op = modules.stream().filter(m -> m.getArtifacts().stream().anyMatch(e -> e.getType().equals("ear"))).map(m -> m.getKey())
.findFirst();
if (!op.isPresent()) {
op = modules.stream().filter(m -> m.getArtifacts().stream().anyMatch(e -> e.getType().equals("war"))).map(m -> m.getKey()).reduce((a, b) -> b);
}
return op.orElse(null);
}
アップデートを、あなたは私のライブラリを使用して気にしない場合:AbacusUtil、コードがに簡素化することができます。
Stream.of(modules).findFirstOrLast(
m -> m.getArtifacts().stream().anyMatch(e -> e.getType().equals("ear")),
m -> m.getArtifacts().stream().anyMatch(e -> e.getType().equals("war"))).orNull();
古いインプラントの不一致! – keuleJ
ありがとう@ user3380739。私は第2の場合が欲しい。 –
2番目のコードを使用しているとき、コンパイラは2つのエラーを投げています。 1つは、タイプ「オプション」
- 1. Java 8 - ExecutorServiceを置き換えるためのラムダとストリーム
- 2. Java 8ストリームとvarargs
- 3. Javaの8ストリーム
- 4. Javaの8ストリーム -
- 5. Java 8ラムダ - ランタイムエラー
- 6. Java 8ラムダ式
- 7. Javaの8 CompletableFuture、ストリームとタイムアウト
- 8. Java 8のコレクションとストリーム/ forEach
- 9. シンボル(Javaの8)ラムダ
- 10. Java 8ストリーム、anyMatch
- 11. は、Java 8ストリーム
- 12. メインメソッドのJava 8ストリーム
- 13. Java by 8ラムダ式
- 14. のJava 8のラムダ式に
- 15. Java 8ストリーム:カウント値
- 16. Java-8ストリームget all
- 17. Java 8ストリームAPIとラムダを使用してマップを操作する
- 18. ラムダとストリーム
- 19. Java 8ストリームのストリーム並列処理
- 20. Java 8のマップ値とストリームの結合
- 21. のJava 8のストリームAPIは
- 22. Javaの8つのストリーム:[]
- 23. Java 8の並列ストリームとThreadLocal
- 24. java 8並列ストリームとバネバッチの比較
- 25. Javaの8ストリーム - フィルタとマップ方法
- 26. AndroidのJava 8ストリームAPI N
- 27. のJava 8ストリーム要素
- 28. Javaの8ストリームは、国
- 29. Java 8ラムダ汎用インターフェースメソッド
- 30. java 8ストリーム:複雑なストリーム処理
あなたは、少なくともANを行う必要があります努力...それをやろうとし、あなたが立ち往生しているところを教えてください!それはあなたが兄弟を学ぶ方法です! – alfasin
現在の実装はnullを返すことができます。良くない。オプションを返すことを検討してください。またはModuleKey.NONE(特別なnullオブジェクト)。 また、常にmodule.getKey()またはnullのいずれかを返します。 ラムダの場合、擬似コードは 'return module.getArtifacts()。stream()。map(module-> module.getKey())。map(key - > nullまたはkey)です。 ' –