java8 Stream mapToLong方法

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值