java8 中的->和::是什么意思呢
例如:numbers.stream().filter(i->i%2==0).distinct().forEach(System.out::println);求懂的大神解答...
例如:
numbers.stream().filter(i -> i % 2 == 0).distinct().forEach(System.out::println);
求懂的大神解答 展开
numbers.stream().filter(i -> i % 2 == 0).distinct().forEach(System.out::println);
求懂的大神解答 展开
1个回答
展开全部
->是Java 8新增的Lambda表达式中,变量和临时代码块的分隔符,即:
(变量) -> {代码块}
如果代码块只有一个表达式,大括号可以省略。如果变量类型可以自动推断出来,可以不写变量类型。
::是类似于C++的域运算符,获取方法使用的。
stream()也是JDK8新增的流,你的表达式中将numbers转换为流,就可以惰性处理,这样只有变量要用的时候才会被调用,专门处理较多的数字或者字符串(如配合readAllLines()方法使用),i -> i % 2 == 0就是自动判断了i的类型(可能是int型,我没法判断),这样就将numbers中所有的偶数过滤出来了(distinct()保证了每个数字只保留一个),然后将这些过滤出的数字每个占用一行地打印出来。
(变量) -> {代码块}
如果代码块只有一个表达式,大括号可以省略。如果变量类型可以自动推断出来,可以不写变量类型。
::是类似于C++的域运算符,获取方法使用的。
stream()也是JDK8新增的流,你的表达式中将numbers转换为流,就可以惰性处理,这样只有变量要用的时候才会被调用,专门处理较多的数字或者字符串(如配合readAllLines()方法使用),i -> i % 2 == 0就是自动判断了i的类型(可能是int型,我没法判断),这样就将numbers中所有的偶数过滤出来了(distinct()保证了每个数字只保留一个),然后将这些过滤出的数字每个占用一行地打印出来。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询