• 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()); //删除最后一个字符,在这里就是删除最后一个逗号

  • 相关阅读:
    蓝牙认证检测实验室授权政策与认可要求解析
    ConstraintTools...
    Juint-单元测试
    IDEA中debug启动报错Method breakpoints may dramatically slow down debugging
    基于51单片机的多种音乐盒播放器Proteus仿真系统
    大数据学习系列之一 ----- Hadoop环境搭建(单机)
    Redis常用应用场景
    基于PyQt5和OpenCV库的简单的文档对齐扫描应用程序
    优思学院|六西格玛黑带大师MBB是什么?兩大认证比较
    商店销售预测(回归&随机森林)
  • 原文地址:https://blog.csdn.net/tomorrow9813/article/details/132586422