在集合遍历中的使用示例1:
public class TestLambda {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
System.out.println("------------------遍历1(以往遍历方式)-----------------");
for (String s : list) {
System.out.println(s);
}
System.out.println("------------------遍历2(lombda表达式)---------------");
list.forEach((t) -> System.out.println(t));
System.out.println("------------------遍历3(双冒号表达式)--------------");
list.forEach(System.out::println);
System.out.println("------------------遍历4(自定义)-------------");
MyConsumer myConsumer = new MyConsumer();
list.forEach(myConsumer);
}
}
class MyConsumer implements Consumer{
@Override
public void accept(Object o) {
System.out.println("执行accept方法,打印 :"+o);
}
}
打印结果:
------------------遍历1(以往遍历方式)-----------------
1
2
3
------------------遍历2(lombda表达式)---------------
1
2
3
------------------遍历3(双冒号表达式)--------------
1
2
3
------------------遍历4(自定义)-------------
执行accept方法,打印 :1
执行accept方法,打印 :2
执行accept方法,打印 :3
示例2:
public static void main(String[] args) {
List<TestSource> list = new ArrayList<>();
TestSource testSource = new TestSource();
testSource.setId(1);
testSource.setName("firstname");
TestSource testSource1 = new TestSource();
testSource1.setId(2);
testSource1.setName("secondname");
list.add(testSource);
list.add(testSource1);
List<TestTarget> testTargets = list.stream().map(t->{
TestTarget testTarget = new TestTarget();
BeanUtils.copyProperties(t,testTarget);
return testTarget;
}).collect(Collectors.toList());
testTargets.forEach((t)-> System.out.println(t));
}
list.stream().map(...).collect(Collectors.toList());
关键在于map方法中的内容,使用lambda表达式将source转化成target返回。