如何从List 获取IntStream?
我可以想到两种方式:
public static IntStream foo(List list) { return list.stream().mapToInt(Integer::valueOf); } public static IntStream bar(List list) { return list.stream().mapToInt(x -> x); }
什么是惯用的方式? 也许已经有一个库函数完全符合我的要求?
我猜(或者至少它是另一种选择)这种方式更具性能:
public static IntStream baz(List list) { return list.stream().mapToInt(Integer::intValue); }
因为函数Integer::intValue
与ToIntFunction
完全兼容,因为它接受一个Integer
并返回一个int
。 没有执行自动装箱 。
我也在寻找一个等效的Function::identity
,我希望写一个相当于你的bar
方法:
public static IntStream qux(List list) { return list.stream().mapToInt(IntFunction::identity); }
但是他们没有提供这种identity
方法。 不知道为什么。