springboot里面List<Parttopart> parttopartList里面有二十万条数据,如何去掉其中supid和subid相同的数据
时间: 2024-11-12 20:40:13 浏览: 14
在Spring Boot项目中,如果你有一个包含大量数据(如20万条)的`List<PartTopart>`列表,并希望去除其中`supId`和`subId`相同的元素,可以考虑使用数据结构和算法来优化处理过程,因为直接遍历整个列表可能会比较耗时。
一种常见的做法是使用Java 8的Stream API,它可以提供更高效的并行操作。你可以先创建一个Map,键是`supId-subId`对,值是一个List存储有相同组合的`PartTopart`对象。然后,通过Stream过滤出Map中不存在的元素,最后将结果转换回List。
以下是示例代码:
```java
Map<String, List<PartTopart>> map = parttopartList.stream()
.collect(Collectors.groupingBy(PartTopart::getSupIdAndSubId,
Collectors.toList()));
parttopartList = parttopartList.stream()
.filter(part -> !map.containsKey(part.getSupIdAndSubId()))
.collect(Collectors.toList());
// 其中getSupIdAndSubId() 是自定义的一个方法,用于获取 supId 和 subId 的组合字符串
private String getSupIdAndSubId(PartTopart part) {
return part.getSupId() + "-" + part.getSubId();
}
```
阅读全文