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