Java 8 - 删除列表中的列表项

时间:2016-09-11 12:44:39

标签: java-8

我在列表中列出了这个列表:

List<List<ScheduleContainer>> scheduleIntervalContainersOfWeek

我的目标是拥有此列表

List <List<ScheduleContainer>> scheduleIntervalContainersOfWeek 

使用ScheduleIntervalContainers,其中interspace为null或false。

因此,我将首先将所有ScheduleContainers转换为ScheduleIntervalContainer(ScheduleContainer是SchedueIntervalContainer的基类),然后我将删除ScheduleIntervalContainer的字段 interspace 为true的所有ScheduleIntervalContainer。

我尝试过:

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

但我不知道filter方法中的lambda表达式。

目前我已经解决了这个问题:

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 个答案:

答案 0 :(得分:1)

试试这个:

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

请注意使用Yoda condition以避免需要进行空检查。