mapToDouble
是 Java 8 中 Stream API 的一部分,它允许你将对象流转换为 DoubleStream
。如果你想从一个包含多个对象的 ArrayList
中提取特定字段,并将这些字段转换为一个双精度数组,你可以按照以下步骤操作:
double
类型。mapToDouble
返回的是 DoubleStream
。假设我们有一个 Person
类,其中包含一个 age
字段,我们想要从一个 ArrayList<Person>
中提取所有人的年龄,并将它们存储在一个双精度数组中。
import java.util.ArrayList;
import java.util.List;
class Person {
private int age;
public Person(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person(25));
people.add(new Person(30));
people.add(new Person(35));
double[] ages = people.stream()
.mapToDouble(Person::getAge)
.toArray();
// 打印结果
for (double age : ages) {
System.out.println(age);
}
}
}
people.stream()
将 ArrayList
转换为一个流。mapToDouble(Person::getAge)
将每个 Person
对象映射为其 age
字段的 double
值。.toArray()
将 DoubleStream
转换为一个双精度数组。Person
对象可能为 null
,需要先过滤掉这些对象。Person
对象可能为 null
,需要先过滤掉这些对象。getAge
方法返回的是 int
类型,因为 mapToDouble
会自动将其提升为 double
。通过这种方式,你可以高效地将对象集合中的特定字段提取到一个数组中,同时利用 Stream API 提供的各种操作来处理数据。
领取专属 10元无门槛券
手把手带您无忧上云