优化代码 private List<SimulationTableDto> distinct(List<SimulationTableDto> list) { // 去重 List<String> distinctList = Lists.newArrayList(); List<SimulationTableDto> distinctedColumnList = Lists.newArrayList(); for (SimulationTableDto simulationTableDto : list) { String key = simulationTableDto.getTableName() + PqlConst.VARIANT_DELIMETER + simulationTableDto.getColumn().getTitle(); if (!distinctList.contains(key)) { distinctedColumnList.add(simulationTableDto); distinctList.add(key); } } return distinctedColumnList; }
时间: 2024-02-24 22:57:09 浏览: 57
这段代码可以使用Java 8的Stream API进行优化,如下所示:
```
private List<SimulationTableDto> distinct(List<SimulationTableDto> list) {
return list.stream()
.collect(Collectors.toMap(simulationTableDto -> simulationTableDto.getTableName() + PqlConst.VARIANT_DELIMETER + simulationTableDto.getColumn().getTitle(),
Function.identity(),
(dto1, dto2) -> dto1))
.values()
.stream()
.collect(Collectors.toList());
}
```
这样就可以用一行代码实现去重操作了。具体来说,上述代码使用`Collectors.toMap()`方法将`SimulationTableDto`对象映射成Map,其中key为`tableName + VARIANT_DELIMETER + column.title`,value为`SimulationTableDto`对象本身;如果遇到重复的key,则使用第三个参数指定的合并函数`dto1 -> dto1`保留原来的值。最后,使用`Map.values()`方法获取所有value,然后使用Stream的`collect()`方法将其转换为List返回。
阅读全文