我写了一个简单的程序,使用Java 8 Lambda表达式来迭代遍历一个List
。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
public class FirstLamdaExpression {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//Way 1 : old way
list.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer t) {
System.out.print(t + " ");
}
});
//Way 2
System.out.println(" ");
list.forEach((Integer t) -> System.out.print(t + " "));
//Way 3
System.out.println(" ");
list.forEach((t) -> System.out.print(t + " "));
//Way 4
System.out.println(" ");
list.forEach(System.out::print);
}
}
在下面的程序中,我有超过2个逻辑需要在lambda内执行。我面临的问题是如何更新第4种方式,即
System.out::print
?import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
public class SecondLamdaExpression {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//Way 1 : Old way
list.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer t) {
System.out.print(t + " Twice is : ");
System.out.print(t*2 + " , ");
}
});
//Way 2
System.out.println(" ");
list.forEach((Integer t) ->
{System.out.print(t + " Twice is : ");
System.out.print(t*2 + " , ");
});
//Way 3
System.out.println(" ");
list.forEach((t) -> {System.out.print(t + " Twice is : ");
System.out.print(t*2 + " , ");
});
//Way 4
//System.out.println(" ");
//list.forEach((t)-> System.out::print{(t + " Twice is : ");});
}
}