您可以使用一个 `Map
1. 设置一个标志位,比如一个布尔变量,用于记录是否已经成功推送了第一条线索。
2. 遍历 `Map` 的键集合(即手机号集合)。
3. 对于每个键(手机号),取出与之关联的线索列表。
4. 遍历该列表,将相关参数(包括标志位)传入方法。
5. 这个方法会返回一个标志位,表示是否成功执行了推送操作。您可以根据该标志位来决定是否将其设置为“已推送”状态。
6. 在下一次循环开始时,继续从手机号对应的第一条线索开始执行。
这样操作后,同一个手机号一般只会在第一次推送成功后被标记为已推送,后续的线索都不会被再次推送。
代码写起来就像这样(待补充):
ListpersonList = new ArrayList<>(); personList.add(new Person(10, "zhangsan")); personList.add(new Person(11, "lisi")); personList.forEach(person -> person.setAge(1));
当然,你也可以用stream流完成这个操作。
ListpersonList1 = personList.stream().map(person -> { person.setAge(1); return person; }).collect(Collectors.toList());
//取每组第一行数据
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;
为啥先用Tuple接受?
在某些情况下,查询结果可能包含多个表的联合查询,或者只要其中几个列的值,或者使用了复杂的 SQL 查询语句,导致查询结果的列与目标类的属性名称不完全匹配。这时,使用 List
先用Tuple接受 ,然后转化为对应的类型。优雅。
代码像这样:
//查询结果 Listtuples = personRepository.findFirstByPhone(phones, "brand"); //映射 List userList = JpaResultUtils.processResult(tuples, User.class);
StringBuilder s = new StringBuilder();
s.append("123").append(",");
s.append("345").append(",");
s.delete(s.length()-1,s.length()); //删除最后一个字符,在这里就是删除最后一个逗号