有人可以帮我优化下面的代码.我不想在同一个列表上流3次.我必须迭代相同的列表并应用不同的映射函数.有人可以建议任何更好的解决方案 -
List<Dummy> dummy = getDummyData(); //Assume we are getting data from some source
List<NewDummy> newDummyList = dummy.stream().map(eachDummy -> mapper.map(eachDummy, NewDummy.class)).collect(Collectors.toList());
if(someCondition) {
final BigDecimal amount1 = dummy.stream().filter(eachDummy -> Optional.ofNullable(eachDummy.getAmount1()).isPresent())
.map(Dummy::getAmount1).reduce(BigDecimal.ZERO, BigDecimal::add);
final BigDecimal amount2 = dummy.stream().filter(eachDummy -> Optional.ofNullable(eachDummy.getAmount2()).isPresent())
.map(Dummy::getAmount2).reduce(BigDecimal.ZERO, BigDecimal::add);
return new DummyObject(newDummyList, amount1, amount2);
} else {
return new DummyObject(newDummyList);
}
Run Code Online (Sandbox Code Playgroud) 在 mysql 中创建线程安全序列时,我遇到了 mysql 文档 - https://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_last-insert-id,建议创建这样的序列 -
1. mysql> CREATE TABLE sequence (id INT NOT NULL);
2. mysql> INSERT INTO sequence VALUES (0);
3. mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
4. mysql> SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)
我的问题不是步骤 4,为什么我每次需要获取新 id 时不能直接查询序列表来获取 id?像这样 - SELECT id FROM 序列;直接查询序列表与文档中建议的 LAST_INSERT_ID 相比是否有任何缺点?
我的 mysql 实现看起来像这样 -
CREATE TABLE sequence (id INT NOT NULL);
INSERT INTO sequence VALUES (0);
DELIMITER //
CREATE PROCEDURE nextVal(OUT nextval INT)
BEGIN
UPDATE sequence SET id=LAST_INSERT_ID(id+1);
SELECT id into nextval FROM …Run Code Online (Sandbox Code Playgroud)