Java中的流到IntStream
我有一个ArrayListJava中的流到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。使
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);
。换句话说,错误与以下事实无关:这是一个通用的流
而不是IntStreamMaybe.map()?(我不经常使用流,所以…)您的ArrayList
是如何声明的?streams文档中的第一个示例使用mapToInt
@tinstaafl ArrayList list=new ArrayList();与标题相关,可能更简单一些-Maybe.map()?(我不经常使用streams,所以…)您的ArrayList
是如何声明的?streams文档中的第一个示例使用mapToInt
@tinstaafl ArrayList list=new ArrayList();关于标题,可能会简单一点-谢谢-这正是我搜索的内容。谢谢-这正是我搜索的内容。