JDK8中有双冒号的用法,就是把方法当作参数传到stream内部,使stream的每一个元素都传入到该方法里面执行一下。html
代码其实很简单:java
之前的代码通常是如此的:函数
public
class
AcceptMethod {
ui
public
static
void
printValur(String str){
System.out.println(
"print value : "
+str);
}
public
static
void
main(String[] args) {
List<String> al = Arrays.asList(
"a"
,
"b"
,
"c"
,
"d"
);
for
(String a: al) {
AcceptMethod.printValur(a);
}
//下面的for each循环和上面的循环是等价的
al.forEach(x->{
AcceptMethod.printValur(x);
});
}
}
print value : a
print value : b
print value : c
print value : d
default
void
forEach(Consumer<?
super
T> action) {
Objects.requireNonNull(action);
for
(T t :
this
) {
action.accept(t);
}
}