如何从 List<Integer> 中获取 IntStream? [英] How do I get an IntStream from a List&lt;Integer&gt;?

查看:32
本文介绍了如何从 List<Integer> 中获取 IntStream?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以想到两种方法:

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);
}

什么是惯用方式?也许已经有一个库函数可以完全满足我的要求?

What is the idiomatic way? Maybe there is already a library function that does exactly what I want?

推荐答案

我猜(或者至少它是一个替代方案)这种方式更高效:

I guess (or at least it is an alternative) this way is more performant:

public static IntStream baz(List<Integer> list)
{
    return list.stream().mapToInt(Integer::intValue);
}

由于函数Integer::intValue 完全兼容 ToIntFunction 因为它接受一个 Integer 并返回一个 int.不执行自动装箱.

since the function Integer::intValue is fully compatible with ToIntFunction since it takes an Integer and it returns an int. No autoboxing is performed.

我也在寻找等效的 Function::identity,我希望写一个与你的 bar 方法等效的方法:

I was also looking for an equivalent of Function::identity, i hoped to write an equivalent of your bar method :

public static IntStream qux(List<Integer> list)
{
    return list.stream().mapToInt(IntFunction::identity);
}

但是他们没有提供这个 identity 方法.不知道为什么.

but they didn't provide this identity method. Don't know why.

这篇关于如何从 List<Integer> 中获取 IntStream?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆