java8 list对象根据指定属性去重并且取出其中的名称组合成新的ListString
假设有一个名为Person的类,其中包含属性name:
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
然后我们有一个List
可以使用Java 8的Stream API来解决这个问题。下面是一个示例代码:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice"));
personList.add(new Person("Bob"));
personList.add(new Person("Alice"));
personList.add(new Person("Charlie"));
List<String> distinctNames = personList.stream()
.map(Person::getName) // 提取name属性
.distinct() // 去重
.collect(Collectors.toList()); // 转换成List<String>
System.out.println(distinctNames);
}
}
输出结果为:
[Alice, Bob, Charlie]
在代码中,我们使用了stream()方法将List转换为一个Stream对象,然后使用map()方法将Person对象映射为其name属性,使用distinct()方法去除重复的name,最后使用collect()方法将Stream转换为List
原文地址: https://www.cveoy.top/t/topic/ixB0 著作权归作者所有。请勿转载和采集!