Java中的流到IntStream

Java中的流到IntStream,java,lambda,java-stream,Java,Lambda,Java Stream,我有一个ArrayListlist,其中的值90、80、75,我想将其转换为IntStream 我曾尝试使用函数list.stream(),但遇到的问题是,当我尝试使用lambda时,例如: list.stream().filter(x->x>=90).forEach(System.out.println(x);它不允许我执行这些操作,因为它是一个常规流,而不是IntStream。基本上这一行应该做的是,如果90在列表中,就可以打印出来。 我缺少什么?我不知道如何将流转换为IntStream。使

我有一个ArrayList
list
,其中的值
90、80、75
,我想将其转换为IntStream
我曾尝试使用函数
list.stream()
,但遇到的问题是,当我尝试使用lambda时,例如:
list.stream().filter(x->x>=90).forEach(System.out.println(x);

它不允许我执行这些操作,因为它是一个常规流,而不是IntStream。基本上这一行应该做的是,如果90在列表中,就可以打印出来。


我缺少什么?我不知道如何将流转换为IntStream。

使用
mapToInt
作为

list.stream()
    .mapToInt(Integer::intValue)
    .filter(x -> x >= 90)
    .forEach(System.out::println);

使用
mapToInt
作为

list.stream()
    .mapToInt(Integer::intValue)
    .filter(x -> x >= 90)
    .forEach(System.out::println);

您可以使用
.mapToInt(Integer::intValue)
将流转换为
IntStream
,但前提是流的类型为
stream
,这意味着您的源列表是
列表

在这种情况下,没有理由这样做

list.stream().filter(x -> x >= 90).forEach(System.out::println);
不应该工作。使用
IntStream
甚至不太可能提高此特定任务的性能

原始代码不起作用的原因是
.forEach(System.out.println(x);
在语法上不正确。首先,缺少一个右括号。其次,
System.out.println(x)
既不是lambda表达式,也不是方法引用。您必须使用其中之一,

.forEach(x->System.out.println(x));
.forEach(System.out::println);
。换句话说,错误与以下事实无关:这是一个通用
而不是
IntStream

,您可以使用
.mapToInt(Integer::intValue)将流转换为
IntStream
,但仅当流的类型为
,这意味着您的源列表是
列表

在这种情况下,没有理由这样做

list.stream().filter(x -> x >= 90).forEach(System.out::println);
不应该工作。使用
IntStream
甚至不太可能提高此特定任务的性能

原始代码不起作用的原因是
.forEach(System.out.println(x);
在语法上不正确。首先,缺少一个右括号。其次,
System.out.println(x)
既不是lambda表达式,也不是方法引用。您必须使用其中之一,

.forEach(x->System.out.println(x));
.forEach(System.out::println);
。换句话说,错误与以下事实无关:这是一个通用的
而不是
IntStream

Maybe.map()?(我不经常使用流,所以…)您的
ArrayList
是如何声明的?streams文档中的第一个示例使用
mapToInt
@tinstaafl ArrayList list=new ArrayList();与标题相关,可能更简单一些-Maybe.map()?(我不经常使用streams,所以…)您的
ArrayList
是如何声明的?streams文档中的第一个示例使用
mapToInt
@tinstaafl ArrayList list=new ArrayList();关于标题,可能会简单一点-谢谢-这正是我搜索的内容。谢谢-这正是我搜索的内容。