gpt4 book ai didi

java - 如何将泛型引入 java 流

转载 作者:行者123 更新时间:2023-12-02 00:48:01 24 4
gpt4 key购买 nike

我有一个第三方方法,仅返回 List ,没有泛型。我想流式传输此列表,并且我知道它包含特定类型,例如 String

有没有一种优雅的方式来处理这个问题?

long containA = externalMethodReturningList()
.stream()
.filter(s -> s.contains("a")) // compiler error here
.count();

// I cannot change the signature:
List externalMethodReturningList() {
return List.of("aba", "bbc", "cab");
}

最佳答案

编辑:我最初的想法是映射 Stream 的元素至String s:

long containA = externalMethodReturningList()
.stream()
.map(Object::toString)
.filter(s -> s.contains("a"))
.count();

但是,这不起作用,因为调用 stream()原始List产生原始 Stream ,这将仍然是原始的 Stream即使在map之后操作。

一个可行的解决方案是强制转换 StreamStream<String> :

long containA = 
((Stream<String>)externalMethodReturningList().stream())
.filter(s -> s.contains("a"))
.count();

有点难看,我知道。

包裹起来可能会更干净 externalMethodReturningList()使用返回 List<String> 的方法,并使用该包装方法作为 Stream 的源管道。

关于java - 如何将泛型引入 java 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59410301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com