最近在学习使用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 才会起作用。