import java.util.*;
import java.util.stream.Collectors;
class Item {
private String id;
private String name;
public Item(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Item{id='" + id + "', name='" + name + "'}";
}
}
public class Main {
public static void main(String[] args) {
List<Item> items = Arrays.asList(
new Item("1", "Alice"),
new Item("2", "Bob"),
new Item("1", "Charlie"),
new Item("3", "David")
);
// 根据id字段去重
List<Item> uniqueItems = items.stream()
.collect(Collectors.collectingAndThen(
Collectors.toMap(Item::getId, item -> item, (existing, replacement) -> existing),
map -> new ArrayList<>(map.values())
));
// 输出去重后的结果
uniqueItems.forEach(System.out::println);
}
}
Item:我们创建了一个简单的 Item 类,包含两个字段 id 和 name。为了方便测试,我们还重写了 toString 方法。items:我们创建了一个包含重复 id 的 Item 对象列表。id 字段去重:使用 Java 8 的 Stream API 和 Collectors.toMap 方法来根据 id 字段去重。toMap 方法的第一个参数是键的提取器(这里是 Item::getId),第二个参数是值的提取器(这里是 item -> item),第三个参数是解决键冲突的合并函数(这里选择保留第一个出现的元素)。List 并打印出来。这个示例展示了如何根据某个字段(如 id)对 List 中的对象进行去重。
上一篇:java字符串转int
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站