• 20230904工作心得:集合应该如何优雅判空?


    1 集合判空

    1. List<String> newlist = null;
    2. //空指针
    3. if( !newlist.isEmpty()){
    4. newlist.forEach(System.out::println);
    5. }
    6. //空指针
    7. if(newlist.size()>0 && newlist!=null){
    8. newlist.forEach(System.out::println);
    9. }
    10. //可行
    11. if(newlist!=null && newlist.size()>0){
    12. newlist.forEach(System.out::println);
    13. }
    14. //可行
    15. if(CollectionUtils.isEmpty(newlist)){
    16. System.out.println("newlist为空");
    17. }

    其中CollectionUtils是springframework里的方法.

    2  Hibernate  findAllByXX ?

    3  list 转 map 出错。

    1. //出错。brandList有值,但是无法传递给groupMap
    2. Map<String, String> groupMap = new HashMap<>();
    3. if(!brandList.isEmpty()){
    4. groupMap = brandList.stream().collect(Collectors.toMap(Brand::getBrand,Brand::getCastBrand));
    5. }
    6. //最后用了这个方法
    7. Map<String, String> groupMap = new HashMap<>();
    8. if(!CollectionUtils.isEmpty(groupMap)){
    9. groupMap.putAll(brandList.stream().collect(Collectors.toMap(Brand::getBrand,Brand::getCastBrand)));
    10. }

    4 list的lambda操作

    1对多映射:根据手机号分组,拿手机号对应的一批数据

    1. Map<String, List<String>> groupMap = brandList
    2. .stream()
    3. .collect(Collectors.groupingBy(Brand::getBrand,Collectors.mapping(Brand::getCastBrand,Collectors.toList())));


    1对1映射:相当于把一个集合数据,从中抽离出两列key-value

    1.  Map<String, String> groupMap = brandList.stream()
    2. .collect(Collectors.toMap(Brand::getBrand,Brand::getCastBrand),(k1,k2)->k1));

    这里有个潜在的问题,如果产生了重复的key,会报错。所以需要加后面的(k1,k2)->k1),这个表示如果有冲突,用旧的值。

    优雅:

    对集合过滤之后,然后针对里面每个元素操作,如果每个元素里有个string,你还可以切割,然后往map里存。

    5 map里getOrDefault(key,default).有效防止空指针

    6 string 切完之后 是数组。然后再 arrays.aslist 变成 list 

    1. String s = "a,b,c";
    2. String[] split = s.split(",");
    3. List<String> list = Arrays.asList(split);

    7 巧用Redis 做次数限制。

    这个还挺实用的,比如对解密次数的限制,对个数的限制等等。

    8 数据库里最好别用limit作为字段名,limit是关键字啊哥哥。

    运行的时候会报错的。

  • 相关阅读:
    JavaWeb搭建学生管理系统(手把手)
    猿创征文|助力前端开发的实用型工具
    【Python 实战基础】Pandas如何给股票数据新增年份和月份
    Centos7安装NVIDIA显卡驱动
    小白也能看懂的 AUC 详解
    使用QtWebApp搭建Http服务器
    Redis 的缓存击穿,穿透,雪崩及其解决方案
    如何快速学习客户寄来的产品?
    基于UDP协议的网络服务器的模拟实现
    golang笔记17--编译调试go源码
  • 原文地址:https://blog.csdn.net/tomorrow9813/article/details/132674513