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。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐