java - 从 Collection<Long> 到 LongStream 的直接转换

标签 java java-8 java-stream

我有一个 Collection<Long> (从 Map<UUID, Long>values() 方法获得)我想将它转换成 LongStream .

我能想到的最简单的方法是:

LongStream stream = map.values().stream().mapToLong(Long::longValue);

然而,令我印象深刻的是,应该有一种更简单的方法来从盒装等价物的集合中获取原始流。

我检查了StreamSupport并且只能找到 StreamSupport.longStream(Spliterator.OfLong spliterator, boolean parallel) , 但似乎没有一种简单的方法来获得 OfLong来自 Collection<Long> 的拆分器实例要么。

我当然可以创建自己的效用函数来执行上述 mapToLong功能,但如果有内置的东西,我宁愿使用它。如果已经有人问过这个问题,我也深表歉意 - 我进行了搜索,但一无所获。

最佳答案

LongStream stream = map.values().stream().mapToLong(Long::longValue);

标准库中没有快捷方式(或方便的转换方法)。我没有发现您提到的方法有任何错误或冗长。它简单明了,为什么您需要寻找其他东西?

您可以创建自己的实用程序类来支持它,但我认为这不会非常有用。

public final class Streams {
    public static LongStream toLongStream(Stream<Long> stream) {
        return stream.mapToLong(Long::longValue);
    }

    public static Stream<Long> toStreamLong(LongStream stream) {
        return stream.boxed();
    }

    private Streams() {}
} 

关于java - 从 Collection<Long> 到 LongStream 的直接转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57726789/

相关文章:

Java:填充两个 vector 并对它们进行排序

java - 如何从已编译的 Java 类/jar 文件中删除方法?

java - 使用 lambda 表达式和流将 Erlang 置换函数移植到 Java 8

Java 8 过滤基于 Map 属性的 Map 对象列表以删除一些重复项

java - 将列表转换为 map - foreach 还是流?

java - 警报对话框的处理结果如何? (安卓)

java - 使用 4 个已知 GCP 点将经纬度坐标转换为像素坐标的代码

security - 如何在 SecurityManager 下运行 Java 8 的 nashorn

java - 在 kotlin 中流式传输时收集条件项

java - 如何从 map 中生成具有不同值的 map (并使用 BinaryOperator 使用正确的键)?