使用Java把list集合中数据根据其中两个字段去重
时间: 2024-02-18 20:00:36 浏览: 113
Java数组去重 集合List去重的常用方法总结
可以使用Java 8中的stream和lambda表达式来实现根据两个字段去重。假设有一个包含实体类对象的列表,其中每个实体类对象包含两个字段:field1和field2,代码如下:
```java
List<Entity> list = Arrays.asList(
new Entity("a", 1),
new Entity("b", 2),
new Entity("a", 1),
new Entity("c", 3),
new Entity("b", 2)
);
```
可以使用以下代码实现根据字段field1和field2去重:
```java
List<Entity> uniqueList = list.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(e -> e.getField1() + e.getField2()))),
ArrayList::new
));
```
这里使用了Collectors.toCollection()方法,将元素放入TreeSet中,根据Comparator.comparing()中的lambda表达式来定义比较规则,实现根据字段field1和field2去重。然后再将结果转换为ArrayList的格式。
需要注意的是,需要在实体类中重写equals()和hashCode()方法,按照两个字段的顺序进行比较,才能正确地去重。
阅读全文