我想向流的元素添加上下文。我知道我可以映射到一个包含要添加的元素和上下文的列表,但它似乎有点臃肿(计算/内存开销)并且不够灵活(类型丢失)。我知道我可以做这样的事情:
public record Tuple<A, B> (A a, B b) {}
Run Code Online (Sandbox Code Playgroud)
然后,例如:
stream // Stream<Foo>
.map(foo -> new Tuple<>(foo, getContext(foo)); // Stream<Tuple<Foo, FooContext>>
Run Code Online (Sandbox Code Playgroud)
但是是否有一个最佳实践,或者甚至是一个开销很少的标准实现?
您不必创建该类Tuple。
例如,您可以使用java.util.AbstractMap.SimpleEntry:
stream.map(foo -> new SimpleEntry<>(foo, getContext(foo)))...
Run Code Online (Sandbox Code Playgroud)
我不会称其为标准实现,但我总是更喜欢在可用时使用 JDK 类。