帮我用java写一个根据主键id过滤重复数据的工具
时间: 2023-04-04 18:03:15 浏览: 124
好的,我可以回答这个问题。以下是一个简单的 Java 代码示例,用于根据主键 ID 过滤重复数据:
```java
import java.util.*;
import java.util.stream.Collectors;
public class FilterDuplicatesById {
public static void main(String[] args) {
List<Data> dataList = new ArrayList<>();
dataList.add(new Data(1, "A"));
dataList.add(new Data(2, "B"));
dataList.add(new Data(3, "C"));
dataList.add(new Data(1, "D"));
dataList.add(new Data(4, "E"));
dataList.add(new Data(2, "F"));
List<Data> filteredList = filterDuplicatesById(dataList);
System.out.println("Original List: " + dataList);
System.out.println("Filtered List: " + filteredList);
}
public static List<Data> filterDuplicatesById(List<Data> dataList) {
return dataList.stream()
.collect(Collectors.toMap(Data::getId, data -> data, (existing, replacement) -> existing))
.values().stream()
.collect(Collectors.toList());
}
static class Data {
private int id;
private String name;
public Data(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Data{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
}
```
这个工具使用 Java 8 的 Stream API,将数据列表转换为 Map,其中键是主键 ID,值是数据对象。如果有重复的主键 ID,则使用现有的数据对象替换新的数据对象。最后,将 Map 中的值转换回列表,以过滤重复的数据。
阅读全文