MST

星途 面试题库

面试题:Java中如何使用Stream API进行对象集合的过滤与转换

假设有一个包含若干Person对象的List,Person类有name(字符串)和age(整数)属性。请使用Java Stream API实现筛选出年龄大于30岁的Person,并将这些Person的name提取出来组成一个新的List。
28.8万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

public class Main {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("Alice", 25));
        personList.add(new Person("Bob", 35));
        personList.add(new Person("Charlie", 40));

        List<String> names = personList.stream()
               .filter(person -> person.getAge() > 30)
               .map(Person::getName)
               .collect(Collectors.toList());

        System.out.println(names);
    }
}
  1. 首先定义了Person类,包含nameage属性及相应的访问器方法。
  2. main方法中,创建了一个Person对象的List,并添加了一些示例数据。
  3. 使用Java Stream API:
    • stream()方法将List转换为流。
    • filter(person -> person.getAge() > 30)筛选出年龄大于30岁的Person对象。
    • map(Person::getName)提取这些Person对象的name属性。
    • collect(Collectors.toList())将结果收集到一个新的List中。

最终输出年龄大于30岁的Person对象的name组成的List