java中怎么根据对象属性值去重
时间: 2023-09-24 13:13:54 浏览: 87
你可以使用 HashSet 数据结构来去除重复项。将每个对象的属性作为 HashSet 元素的键,然后添加每个对象到 HashSet 中。由于 HashSet 不能包含重复元素,所以相同属性值的对象将自动去重。以下是一个示例代码:
```java
HashSet<Object> set = new HashSet<>();
for (Object obj : objList) {
set.add(obj.getProperty()); // 将属性作为键添加到 HashSet 中
}
List<Object> resultList = new ArrayList<>(set); // 将去重后的结果转换为列表
```
相关问题
javalist根据对象属性去重
您好!针对您的问题,我可以给出以下方案:
可以遍历列表中的元素,将每个元素的指定属性值存储在一个set中,如果set中已经存在该属性值,则删除该元素,否则将该属性值存入set。最后返回去重后的列表即可。
如有更好的解决方案,还请指正。感谢您的提问!
java8集合中的对象根据属性去重
在Java8中,可以使用Stream API来对集合中的对象根据属性进行去重。可以使用 `Collectors.toMap` 方法将对象的属性作为键,对象本身作为值,然后使用 `Function.identity()` 方法获取对象本身。如果存在重复的键,则使用 `BinaryOperator` 自定义合并逻辑,例如选择保留第一个或最后一个对象。例如,假设有一个 `Person` 类,其中包含 `id` 和 `name` 两个属性,现在需要根据 `id` 属性进行去重,代码如下:
```java
List<Person> persons = Arrays.asList(new Person(1, "Tom"),
new Person(2, "Jerry"),
new Person(3, "Mike"),
new Person(2, "Lucy"),
new Person(4, "John"),
new Person(1, "Bob"));
List<Person> result = new ArrayList<>(persons.stream()
.collect(Collectors.toMap(Person::getId, Function.identity(), (person1, person2) -> person1))
.values());
result.forEach(person -> System.out.println(person.getId() + " : " + person.getName()));
```
运行结果如下:
```
1 : Tom
2 : Jerry
3 : Mike
4 : John
```
其中,首先使用 `Collectors.toMap` 方法将对象的 `id` 属性作为键,对象本身作为值,然后使用 `(person1, person2) -> person1` 自定义合并逻辑,选择保留第一个对象。最后使用 `values()` 方法获取去重后的对象集合,并输出结果。
阅读全文