假设有一个名为Person的类,其中包含属性name:

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

然后我们有一个List,我们要根据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

java8 list对象根据指定属性去重并且取出其中的名称组合成新的ListString

原文地址: https://www.cveoy.top/t/topic/ixB0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录