随便写个简单启动项目, springboot 或者 控制台
随便两个简单class.
ReqDTO.java
@Data
public class ReqDTO {
private List<ReqModel> list;
}
ReqModel.java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ReqModel {
private Integer age;
private String name;
}
随便弄个启动方法
package cn.codejam.demo.controller;
import cn.xuetian.demo.dto.ReqDTO;
import cn.xuetian.demo.dto.ReqModel;
import com.google.common.collect.Lists;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author zss
* @date 2022/9/14 10:54
*/
@RestController
@RequestMapping("/test1")
public class Test1Controller {
@GetMapping("/test1")
public String test1(@RequestBody ReqDTO req) {
List<ReqModel> list = Lists.newArrayList(
new ReqModel(1, "aaa"), new ReqModel(2, "bbb"), new ReqModel(3, "ccc")
);
ReqModel result = list.stream().reduce(
new ReqModel(100, "AA"),
(reqModel, reqModel2) -> {
int i = reqModel.getAge() + reqModel2.getAge();
return new ReqModel(i, reqModel.getName() + reqModel2.getName());
}
);
ReqModel result1 = list.stream().reduce(
(reqModel, reqModel2) -> {
int i = reqModel.getAge() + reqModel2.getAge();
return new ReqModel(i, reqModel.getName() + reqModel2.getName());
}
).orElse(null);
//其中, BinaryOperator<U> combiner, combiner在串行流中不起作用而在并行流中起作用:
ReqModel result2 = list.parallelStream().reduce(
new ReqModel(100, "AA"),
(reqModel, reqModel2) -> {
int i = reqModel.getAge() + reqModel2.getAge();
return new ReqModel(i, reqModel.getName() + reqModel2.getName());
},
(reqModel, reqModel2) -> {
int i = reqModel.getAge() + reqModel2.getAge();
return new ReqModel(i, reqModel.getName() + reqModel2.getName());
}
);
return com.alibaba.fastjson.JSON.toJSONString(result);
}
}
调试一下, 看看效果就懂了.
总结
