2023-12-29 工作心得补充 适时抽取方法,让代码变简洁

1 JSONObject 实际上是个map 


2 数据库实际上也是map 只不过map 是竖着写,数据库横着写.


3 像 用户名 密码 这种后续可能随时会改的,不要写死在代码里,都写成nacos参数。


4 方法的抽取 让代码变得简洁

可读性很高。这是方法抽取的秘诀。写文章应该也可以这样,把一些抽象的东西装进黑盒,尽可能为大众留下更通俗易懂的文字。

选中代码-右键重构-提取方法-起名

5 for循环map的key,然后去另一个map匹配,如果有就取出来做后续处理,同时把它从Map里给删掉。(防止重复)

Map是可以这样做的,List不行。List如果在for循环的时候 删除里面的元素,会导致ConcurrentModificationException异常。
for (String key: map.keySet()) {
            Car car = null;
            if (map.containsKey(key)) {
                car = map.get(key);
                map.remove(key);
            }
}

6 如果list转map 的时候,key这样设置

 ele.getBatchId() + "_" + ele.getDate() 
那应该怎么取batchId呢?

 ele.split("_")[0]

7 按下面这样操作,就可以拿到去重后的已有日期数据。


List<String> dateCollect = reportList.stream().map(ReportStatistic::getDate).collect(Collectors.toList());
Set<String> dateSet = new HashSet<>(dateCollect);

8 擅用return。

如果有 就xx 然后直接 return 。

我之前总忘记还有return。

9 命名规范。如果是布尔值,命名最后前可以加个is。比如是否同步历史数据,可以写isSyncHistory,如果是true就是同步,如果是false,就是不同步。

如果写syncHistory,那么就容易造成混乱。


10 增量保存的奥秘。
 

Map<String, Car> oldDataMap = oldDatalist.stream().collect(Collectors.toMap(e -> e.getDate() + "-" + e.getxx() + "-" + e.getxx() , Function.identity(), (k, v) -> k));
Map<String, Car> newDataMap = newDataList.stream().collect(Collectors.toMap(e -> e.getDate() + "-" + e.getxx() + "-" + e.getxx() , Function.identity(), (k, v) -> k));

for (String key : newDataMap.keySet()) {
//如果旧数据里有新数据的key,那么就给该新数据设置旧数据的id
    if(oldDataMap.containsKey(key)){
        newDataMap.get(key).setId(oldDataMap.get(key).getId());
    }
}
//再用JPA的SaveAll(如果id为null就新增,如果id不为null就修改,也就是增量新增)
repository.saveAll(newDataMap.values);

相关推荐

  1. 2023-12-28 补充心得

    2023-12-29 16:54:03       61 阅读
  2. 2023-12-08 工作心得

    2023-12-29 16:54:03       50 阅读
  3. 2023-12-15 工作心得 SQL索引优化实践

    2023-12-29 16:54:03       55 阅读
  4. 工作心得——css元素居中的方法

    2023-12-29 16:54:03       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 16:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 16:54:03       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 16:54:03       82 阅读
  4. Python语言-面向对象

    2023-12-29 16:54:03       91 阅读

热门阅读

  1. 【洛谷】进击的奶牛

    2023-12-29 16:54:03       58 阅读
  2. 单例设计模式

    2023-12-29 16:54:03       63 阅读
  3. docker常用组合命令

    2023-12-29 16:54:03       48 阅读
  4. ::符号的使用

    2023-12-29 16:54:03       53 阅读
  5. 前端实现断点续传文件

    2023-12-29 16:54:03       50 阅读
  6. 2023年12月29日 晨会报告

    2023-12-29 16:54:03       48 阅读