List<Parttopart> parttopartList里面如何根据supid和subid去重
时间: 2024-11-13 11:40:34 浏览: 13
JAVA第二章超市系统
在Java中,如果你想从`List<PartToPart>`中去除根据`supid`和`subid`组合重复的元素,可以采取以下几种策略:
1. 使用`LinkedHashSet`: `LinkedHashSet`集合会自动去重,并保持插入顺序。你可以先将列表转换为`Set`,然后回填到一个新的`List`中,因为`Set`不允许有重复元素。
```java
List<PartToPart> distinctList = new ArrayList<>();
for (PartToPart part : parttopartList) {
String key = part.getSupid() + "|" + part.getSubid();
if (!distinctList.contains(key)) {
distinctList.add(part);
}
}
```
2. 如果你想保留原列表结构并动态去重,可以使用流(Stream API):
```java
parttopartList.stream()
.collect(Collectors.groupingBy(PartToPart::getSupidAndSubid, Collectors.toList()))
.values().forEach(distinctList::addAll); // supid和subid作为key,值为list
// 定义一个方法获取唯一的键值对
private List<String> getSupidAndSubidKey(PartToPart part) {
return Arrays.asList(part.getSupid(), part.getSubid());
}
Map<List<String>, List<PartToPart>> map = parttopartList.stream()
.collect(Collectors.groupingBy(this::getSupidAndSubidKey));
distinctList.addAll(map.values().stream().flatMap(Collection::stream).collect(Collectors.toList()));
```
以上两种方法都会根据`supid`和`subid`的组合去重,保留唯一项。
阅读全文