• 20230830工作心得:巧用标记位和For循环遍历


    1 巧用标记位和For循环遍历

    您可以使用一个 `Map>` 类型的数据结构来根据手机号分组并保存多条线索。然后,可以按照以下方式进行操作:

    1. 设置一个标志位,比如一个布尔变量,用于记录是否已经成功推送了第一条线索。
    2. 遍历 `Map` 的键集合(即手机号集合)。
    3. 对于每个键(手机号),取出与之关联的线索列表。
    4. 遍历该列表,将相关参数(包括标志位)传入方法。
    5. 这个方法会返回一个标志位,表示是否成功执行了推送操作。您可以根据该标志位来决定是否将其设置为“已推送”状态。
    6. 在下一次循环开始时,继续从手机号对应的第一条线索开始执行。

    这样操作后,同一个手机号一般只会在第一次推送成功后被标记为已推送,后续的线索都不会被再次推送。
     

    代码写起来就像这样(待补充):

    2 List类型 list.foreach 可以直接挨个修改list里的值

    List personList = new ArrayList<>();
    personList.add(new Person(10, "zhangsan"));
    personList.add(new Person(11, "lisi"));
    personList.forEach(person -> person.setAge(1));

    当然,你也可以用stream流完成这个操作。 

    List personList1 = personList.stream().map(person -> {
        person.setAge(1);
        return person;
    }).collect(Collectors.toList());

     3  窗口函数根据某个条件分组,组内排序,然后取每组第N行或第N到M行数据

    //取每组第一行数据

    row_number() over(partition by xxx order by tc.create_time desc) as number where number = 1;

    //取每组第1到3条数据

    WHERE number BETWEEN 1 AND 3;

    4 执行SQL语句,然后用List接收

    为啥先用Tuple接受?

     在某些情况下,查询结果可能包含多个表的联合查询,或者只要其中几个列的值,或者使用了复杂的 SQL 查询语句,导致查询结果的列与目标类的属性名称不完全匹配。这时,使用 List 类型可以接收包含多种类型数据的查询结果。

    先用Tuple接受 ,然后转化为对应的类型。优雅。

    代码像这样:

    //查询结果
    List tuples = personRepository.findFirstByPhone(phones, "brand");
    //映射
    List userList = JpaResultUtils.processResult(tuples, User.class);

    5 删除 StringBuilder 最后一个字符

    StringBuilder s = new StringBuilder();
            s.append("123").append(",");
            s.append("345").append(",");
            s.delete(s.length()-1,s.length()); //删除最后一个字符,在这里就是删除最后一个逗号

  • 相关阅读:
    SpringCloudGateway网关中各个过滤器的作用与介绍
    centos7.6.1810 华为arm架构鲲鹏服务器 离线安装mysql5.7.27
    我的IC秋招小结
    踩到一个关于分布式锁的非比寻常的BUG!
    企业该如何选择合适的ERP系统?谈谈国内外ERP软件的优缺点
    非root用户,没有root权限,安装nginx
    C Primer Plus(6) 中文版 第10章 数组和指针 10.6 保护数组中的数据
    如何用chatgpt写小说
    Day35 贪心算法part04
    LeetCode - 102. 二叉树的层序遍历;110. 平衡二叉树;098. 验证二叉搜索树
  • 原文地址:https://blog.csdn.net/tomorrow9813/article/details/132586422