2016-09-11 4 views
0

で、リストの項目を削除します。のJava 8は、私はリストにこのリストを持つリスト

したがってIは、第一(ScheduleContainerはSchedueIntervalContainerの基底クラスである)、次いでIはScheduleIntervalContainerのフィールド間隙が真である全てScheduleIntervalContainerを除去するScheduleIntervalContainerに全てScheduleContainersを変換します。

私はそれを試してみました:

scheduleIntervalContainersOfWeek.stream().filter(...) 

が、私は、フィルタ方式でのラムダ式を知りません。

現在、私はこのように、この問題を解決した:

for (final List<ScheduleContainer> scheduleContainers : scheduleIntervalContainersOfWeek) { 
     for (final ScheduleContainer scheduleContainer : scheduleContainers) { 

      final ScheduleIntervalContainer scheduleIntervalContainer = (ScheduleIntervalContainer)scheduleContainer; 

      // if sic is absence container than continue (absence sics are shown in schedule) 
      if (scheduleIntervalContainer.getInterspace()) { 
       continue; 
      } 
+1

これは少し不明です。サンプルの入出力、および使用しているクラスのコードを提供できますか? – Tunaki

+0

これは私のアプローチです** scheduleIntervalContainersOfWeek.stream()。forEach(s - > s.stream()。map(p - >(ScheduleIntervalContainer)p).filter(r - >(r.getInterspace()== null) || r.getInterspace()== false))); **私はScheduleIntervalContainerだけが必要です。** r.getInterspace()== null || r.getInterspace()== false ** – quma

答えて

1

はこれを試してみてください:

scheduleContainers = scheduleContainers.stream() 
    .filter(sc -> !Boolean.TRUE.equals(((ScheduleIntervalContainer)sc).getInterspace())) 
    .collect(Collectors.toList()); 

がnullチェックの必要性を回避するためにYoda conditionの使用に注意してください。

関連する問題