当前位置: 首页 > 面试题库 >

检查流中的instanceof

史旺
2023-03-14
问题内容

我有以下表达:

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所说,如果您喜欢那种样式,可以用方法引用替换lambda表达式:

scheduleIntervalContainers.stream()
    .filter(ScheduleIntervalContainer.class::isInstance)
    .map (ScheduleIntervalContainer.class::cast)
    .filter(sic -> sic.getStartTime() != sic.getEndTime())
    .collect(Collectors.toList());


 类似资料:
  • 需要您的帮助,我检查音频流是否当您按下按钮或当程序启动的时刻,当您按下按钮,音频流是不可用的,然后没有发生,音乐没有播放,没有任何响应从程序没有我想让您认识到如何这样的响应尽可能做吗?

  • 给定使用PropType的以下代码(请参阅本期) 使用流类型的等价物是什么? 我只知道: 使用这个作为参考,但这将允许成为任何React组件。 如何键入检查道具以确保它是使用Flow的特定React组件的实例?

  • 假设您有一个第三方库,它公开了下一个接口。 代码无法编译,因为Function不知道如何处理由domap声明的CheckedException。我想出了两个可能的解决方案。 解决方案#1-包装调用 解决方案#2-编写实用程序方法

  • 给定:客户列表(带供应商和代理字段)、字符串代理、字符串供应商。 目标:检查是否有客户支持给定的代理和给定的供应商。 我有一个流需要过滤两次(两个值)。如果在第一次过滤后流是空的,我需要检查它并抛出异常。如果它不是空的,我需要通过第二个过滤器处理它(然后再次检查它是否不是空的)。 如果可能的话,我想避免将流收集到列表中(我不能使用任何匹配或计数方法,因为它们是终端) 目前我的代码看起来像: 在这个

  • 是否可以从Flink流作业触发检查点? 我的用例是:我有两个流R和S要用滚动的时间窗口连接。来源是Kafka。我使用事件时间处理和BoundedOutOfOrdernessGenerator来确保来自两个流的事件最终出现在同一个窗口中。