java8写一个“将n个key作为组合key,对于相同的组合key只保留最新一条数据”的共通方法
时间: 2024-05-05 20:17:17 浏览: 12
可以使用Java8中的Stream API和Map来实现这个功能。具体步骤如下:
1. 定义一个类来表示数据项,包含n个key和其他需要保存的数据。
```
class DataItem {
private String key1;
private String key2;
// ...
private String data;
public DataItem(String key1, String key2, /* ... */ String data) {
this.key1 = key1;
this.key2 = key2;
// ...
this.data = data;
}
// getter and setter methods
}
```
2. 将数据项流按照组合key进行分组,并且对于每个组合key只保留最新的一条数据。
```
public Map<String, DataItem> filterLatestData(List<DataItem> dataList) {
return dataList.stream()
.collect(Collectors.toMap(
item -> item.getKey1() + item.getKey2() + /* ... */, // 组合key
Function.identity(),
(oldItem, newItem) -> newItem // 保留最新的一条数据
));
}
```
3. 在上面的代码中,toMap方法的第三个参数是一个BinaryOperator,它用于合并相同的key对应的两个数据项。在这里,我们只保留最新的一条数据,因此直接返回newItem即可。
4. 返回一个Map,其中key为组合key,value为最新的数据项。
```
Map<String, DataItem> latestDataMap = filterLatestData(dataList);
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)