[解決済み] ストリームでinstanceofをチェックする
2022-12-06 18:45:39
質問
次のような式があります。
scheduleIntervalContainers.stream()
.filter(sic -> ((ScheduleIntervalContainer) sic).getStartTime() != ((ScheduleIntervalContainer)sic).getEndTime())
.collect(Collectors.toList());
...ここで
scheduleIntervalContainers
は要素タイプ
ScheduleContainer
:
final List<ScheduleContainer> scheduleIntervalContainers
フィルタの前に型を確認することは可能でしょうか?
どのように解決するのですか?
別の
filter
のみを維持するために
ScheduleIntervalContainer
のインスタンスだけを残し
map
を追加することで、後のキャストを省くことができます。
scheduleIntervalContainers.stream()
.filter(sc -> sc instanceof ScheduleIntervalContainer)
.map (sc -> (ScheduleIntervalContainer) sc)
.filter(sic -> sic.getStartTime() != sic.getEndTime())
.collect(Collectors.toList());
また、Holgerがコメントしたように、そのスタイルを好むのであれば、ラムダ式をメソッド参照に置き換えることができます。
scheduleIntervalContainers.stream()
.filter(ScheduleIntervalContainer.class::isInstance)
.map (ScheduleIntervalContainer.class::cast)
.filter(sic -> sic.getStartTime() != sic.getEndTime())
.collect(Collectors.toList());
関連
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み] Java 8 StreamをArrayに変換する方法は?
-
[解決済み] 可能な限り常にパラレルストリームを使用した方がいいのでしょうか?
-
[解決済み] 述語による最初の要素の検索
-
[解決済み] instanceofとClass.isAssignableFrom(...)の違いは何ですか?
-
[解決済み] Java 8 で java.util.stream.Stream からリストを取得する
-
[解決済み] Javaでinstanceofを使用することによるパフォーマンスへの影響
-
[解決済み】array[idx++]+="a "は、Java 8ではidxを1回増やすが、Java 9と10では2回増やすのはなぜか?
-
[解決済み】Java 8 プロパティで区別する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
FindBugの使用概要
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
JNIエンカウンターエラー:構造体またはユニオンではない何かでメンバー 'FindClass' のリクエスト
-
eclipse にリソースリーク:'in' が閉じない
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
アクセス制限の解決方法: ---- in Java
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.