fre*_*low 40 java collections boxing java-8 java-stream
我可以想到两种方式:
public static IntStream foo(List<Integer> list)
{
return list.stream().mapToInt(Integer::valueOf);
}
public static IntStream bar(List<Integer> list)
{
return list.stream().mapToInt(x -> x);
}
Run Code Online (Sandbox Code Playgroud)
什么是惯用的方式?也许已经有一个库函数完全符合我的要求?
gon*_*ard 46
我想(或者至少它是另一种选择)这种方式更具性能:
public static IntStream baz(List<Integer> list)
{
return list.stream().mapToInt(Integer::intValue);
}
Run Code Online (Sandbox Code Playgroud)
由于该函数Integer::intValue完全兼容,ToIntFunction因为它需要一个Integer并返回一个int.没有执行自动装箱.
我也在寻找相同的Function::identity,我希望写一个相当于你的bar方法:
public static IntStream qux(List<Integer> list)
{
return list.stream().mapToInt(IntFunction::identity);
}
Run Code Online (Sandbox Code Playgroud)
但他们没有提供这种identity方法.不知道为什么.
另一种转换方法是使用Stream.flatMapToInt和IntStream.of作为:
public static IntStream foobar(List<Integer> list) {
return list.stream().flatMapToInt(IntStream::of);
}
Run Code Online (Sandbox Code Playgroud)
注意:在这里发帖之前,我已经解决了几个链接问题,但我也没有在其中找到建议。
| 归档时间: |
|
| 查看次数: |
13822 次 |
| 最近记录: |