lambda表达式学习中遇到的坑

最近在学习使用java8 lambda表达式。根据方法的字面意思,很容易理解和上手运用。

但最近在使用lambda表达式时遇到了一个问题,代码逻辑没有一点问题,但结果就是不尽如人意。

先上旧代码:

testOneList.stream().distinct().filter(item ->

  。。。。。

).map(item -> testTwoList.add(new TestTwoModel(item,.....)));

我开始怀疑我是不是运用错方法了,难道这个方法不能如此使用?没道理呀。上网查了许久,不断的测试调试,都没发现问题所在。

最后请求了大神,方明白错误所在。改成:

testOneList.stream().distinct().filter(item ->

  。。。。。

).forEach(item -> testTwoList.add(new TestTwoModel(item,.....)));

map本身不是个结束点,放在最后是会被忽略的,要改成 forEach 或者后面加个 collect 才会起作用。

原文地址:https://www.cnblogs.com/tu-emily/p/11820731.html