我有一个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() {}
}