java - 如何从 List<Integer> 中获取 IntStream?

标签 java collections java-8 java-stream boxing

我可以想到两种方法:

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

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

最佳答案

我猜(或者至少是另一种选择)这种方式性能更高:

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

由于函数Integer::intValueToIntFunction 完全兼容因为它需要一个 Integer 并返回一个 int。没有 autoboxing执行。

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

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

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

关于java - 如何从 List<Integer> 中获取 IntStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24633913/

相关文章:

c# - 如何优雅地解决这个考勤表问题?

java - 双键设置图

java - 正则表达式获取一个或两个分隔符之间的字符串

java - java中比较两个字符串

c# - 递归获取对象的属性和子属性

Java 8 添加对象列表的多个属性的值

java - 流分组By : reducing to first element of list

java - 用于查看编年史队列/ map 内容的 UI/实用程序

java - 将数组传递给方法与将原始数据类型传递给方法不一致

java - 无法让 Minecraft 盔甲纹理发挥作用