java list根据对象的某个属性的值去重
时间: 2023-05-01 21:03:46 浏览: 64
Java中的list根据对象的某个属性的值去重可以使用Set集合。具体步骤为:创建一个空的Set集合,遍历list中的对象,将对象的某个属性值作为Set集合中的元素加入Set集合,这样重复的元素就会被去掉。最后,将Set集合转换为List集合即可。
相关问题
java 对list对象里面某个属性去重示例
可以使用 Java 8 的 Stream API 来实现对 List 对象里面某个属性去重。假设有一个 Person 类,其中包含 name 和 age 两个属性,现在要对 List<Person> 中的 name 属性进行去重,可以按照如下方式实现:
```java
List<Person> persons = new ArrayList<>();
// 添加一些 Person 对象到 persons 列表中
List<String> distinctNames = persons.stream().map(Person::getName).distinct().collect(Collectors.toList());
```
上述代码中,首先使用 `map` 方法将 Person 对象转换为 name 属性,然后使用 `distinct` 方法去重,最后使用 `collect` 方法将去重后的结果转换为一个 List<String> 对象,即 distinctNames。
如果要对 List<Person> 中的其他属性去重,只需要将 `map` 方法中的 `Person::getName` 替换为对应的属性访问方法即可。
list对象数组根据某个属性去重java
你可以使用Java 8中的Stream API来根据某个属性对list对象数组进行去重。具体实现如下:
假设你有一个包含Person对象的List:
```
List<Person> people = Arrays.asList(
new Person("John", 25),
new Person("Bob", 30),
new Person("John", 25),
new Person("Alice", 20)
);
```
如果你想根据Person对象的name属性去重,可以使用以下代码:
```
List<Person> distinctPeople = people.stream()
.filter(distinctByKey(Person::getName))
.collect(Collectors.toList());
```
其中,`distinctByKey`是一个自定义的方法,用于根据某个属性去重:
```
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
```
上述代码会返回一个新的List,其中包含去重后的Person对象:
```
[Person(name=John, age=25), Person(name=Bob, age=30), Person(name=Alice, age=20)]
```
注意:该方法仅适用于Java 8及以上版本。如果你使用的是早期版本的Java,你可以使用传统的方式来实现去重,例如使用HashSet等数据结构来去重。