LongStream mapToLong(ToLongFunction<? super T> mapper) 方法是 Java 中 Stream 接口的一部分,用于将流中的每个元素通过给定的函数 mapper 转换成一个 long 类型的值,并将这些 long 值组成一个新的 LongStream。这个方法主要用于类型转换,特别是当你需要从对象中提取一个 long 类型的字段或属性时非常有用。
解释
- 参数:
ToLongFunction<? super T> mapper是一个函数式接口,它接受一个类型为T的参数,并返回一个long类型的结果。这里的? super T表示mapper可以接受T或其父类型的对象作为输入。 - 返回值:方法返回一个
LongStream,即一个包含long类型元素的流。 - 作用:对原始流中的每个元素应用
mapper函数,将其转换为long类型的值,并将这些值作为新流的元素。
使用示例
假设我们有一个员工类 Employee,其中包含员工的 ID(long 类型)和姓名(String 类型)。我们想要从一个包含多个 Employee 对象的流中提取所有员工的 ID。
首先,定义 Employee 类:
public class Employee {
private long id;
private String name;
public Employee(long id, String name) {
this.id = id;
this.name = name;
}
public long getId() {
return id;
}
// 省略其他getter和setter
}
然后,使用 mapToLong 方法提取所有员工的 ID:
import java.util.stream.LongStream;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
// 创建一个包含员工对象的流
Stream<Employee> employees = Stream.of(
new Employee(1, "张三"),
new Employee(2, "李四"),
new Employee(3, "王五")
);
// 使用 mapToLong 提取所有员工的 ID
LongStream employeeIds = employees.mapToLong(Employee::getId);
// 打印所有员工的 ID
employeeIds.forEach(System.out::println);
}
}
在这个示例中,我们首先创建了一个包含三个 Employee 对象的流。然后,我们使用 mapToLong 方法和方法引用 Employee::getId 来提取每个员工的 ID,并将这些 ID 组成一个新的 LongStream。最后,我们遍历这个 LongStream,打印出所有员工的 ID。
1476

被折叠的 条评论
为什么被折叠?



