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

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

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

  1. 设置一个标志位,比如一个布尔变量,用于记录是否已经成功推送了第一条线索。

  2. 遍历 `Map` 的键集合(即手机号集合)。

  3. 对于每个键(手机号),取出与之关联的线索列表。

  4. 遍历该列表,将相关参数(包括标志位)传入方法。

  5. 这个方法会返回一个标志位,表示是否成功执行了推送操作。您可以根据该标志位来决定是否将其设置为"已推送"状态。

  6. 在下一次循环开始时,继续从手机号对应的第一条线索开始执行。

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

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

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

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

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

复制代码
List<Person> 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>接收

为啥先用Tuple接受?

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

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

代码像这样:

复制代码
//查询结果
List<Tuple> tuples = personRepository.findFirstByPhone(phones, "brand");
//映射
List<User> 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()); //删除最后一个字符,在这里就是删除最后一个逗号

相关推荐
私人珍藏库3 小时前
[吾爱大神原创工具] QtScreenSwitcher[Win]一个现代化、极简、高颜值的多屏开关工具。
windows·工具·软件·win·多功能
competes3 小时前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
零号全栈寒江独钓5 小时前
基于c/c++实现linux/windows跨平台获取ntp网络时间戳
linux·c语言·c++·windows
dyxal12 小时前
内网 Windows 离线安装 uv:极速 Python 包管理器的部署实战
windows·python·uv
stone082312 小时前
如何解决Windows硬盘变成了空白
windows
零号全栈寒江独钓13 小时前
基于c/c++实现linux/windows跨平台ntp时间戳服务器
linux·c语言·c++·windows
舒一笑13 小时前
Windows 下执行 pnpm install 报 EBUSY: resource busy or locked,我最后用这一招解决了
前端·windows·程序员
hERS EOUS14 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
爱吃香蕉的阿豪15 小时前
Mac 远程操作 Windows 开发:ZeroTier + JetBrains 实战指南
windows·macos·zerotoer
YJlio16 小时前
2026年4月18日60秒读懂世界:从神舟二十号出舱到L2新国标公示,今天最值得关注的6个信号
windows·python·django·计算机外设·电脑·outlook·eixv3