这段代码首先使用Java8的StreamAPI对testLogForms列表按创建日期排序,然后通过Collectors.toMap方法将排序后的日志转换为Map,其中SN作为键,日志对象作为值。由于Map不允许重复的键,所以如果有相同SN的日志,后面的记录会更新前面的值,从而实现合并。
摘要由CSDN通过智能技术生成
testLogForms = new ArrayList<>(testLogForms.stream().sorted(Comparator.comparing(MesWpTestLogForm::getCreatedDate))
.collect(Collectors.toMap(MesWpTestLogForm::getSn,e->e)).values());
先按时间顺序排序,然后利用map特性后面相同sn的记录插入的会更新value,完成
private
List
<GenErrQsTask> getDistinct
List
(
List
<GenErrQsTask> genErrQsTask
List
List
) {
List
<GenErrQsTask> new
List
= new Array
List
<>();
Map<String,
List
<GenErrQsTask>> map =
//按照createDate排序 rever.
public static void main(String[] args) {
// 消费型
Consumer<Integer> con = s->System.out.println(s);
Consumer<Integer> con2 = System.out::println;
con2.accept(666);
// 比较
Comparat..
如下表,有条号码
重复
数据
,但是更新
时间
不同,表中还有其他
字段
需要用到
用普通查询不行(SELECT t.phone_number,MAX(t.update_time) update_time,id FROM cts_monitor_manager t GROUP BY phone_number)
因为group by 中只可以查到grou by后面的
字段
phone_number,其他
字段
(id)查不到的,会报错
所以需要自联查询
SELECT t.phone_number,t.update_time
1.
list
字符串去重
List
<String> unique =
list
.
stream
().distinct().collect(Collectors.to
List
());
2.
集合
对象
去重
// Person
对象
public class Person {
private String id;
private String name;
private String sex;
<!--省略
假设我们有一个
对象
集合
`
List
<Person>`,其中每个 `Person`
对象
都有一个 `name`
字段
,我们想要将所有人的名字抽取出来成为一个 `
List
<String>`。可以使用
Java
8 的
Stream
API 来实现:
```
java
List
<Person> person
List
= ...;
List
<String> name
List
= person
List
.
stream
()
.map(Person::getName)
.collect(Collectors.to
List
());
上面的代码中,首先通过 `
stream
()` 方法将 `person
List
` 转换成一个流,然后使用 `map()` 方法将每个 `Person`
对象
映射成其 `name`
字段
,最后使用 `collect()` 方法将所有的名字收集成一个 `
List
<String>`。其中 `Person::getName` 是一个方法引用,表示获取 `Person`
对象
的 `name`
字段
。
CSDN-Ada助手:
java stream 保留对象集合中有相同字段值的时间最新的记录
CSDN-Ada助手: