是否有向流元素添加上下文的最佳实践?

Oct*_*bin 4 java java-stream

我想向流的元素添加上下文。我知道我可以映射到一个包含要添加的元素和上下文的列表,但它似乎有点臃肿(计算/内存开销)并且不够灵活(类型丢失)。我知道我可以做这样的事情:

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)

但是是否有一个最佳实践,或者甚至是一个开销很少的标准实现?

Era*_*ran 5

您不必创建该类Tuple

例如,您可以使用java.util.AbstractMap.SimpleEntry

stream.map(foo -> new SimpleEntry<>(foo, getContext(foo)))...
Run Code Online (Sandbox Code Playgroud)

我不会称其为标准实现,但我总是更喜欢在可用时使用 JDK 类。