阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用map

33次阅读
没有评论

共计 1002 个字符,预计需要花费 3 分钟才能阅读完成。

Stream.map()Stream 最常用的一个转换方法,它把一个 Stream 转换为另一个Stream

所谓 map 操作,就是把一种操作运算,映射到一个序列的每一个元素上。例如,对 x 计算它的平方,可以使用函数f(x) = x * x。我们把这个函数映射到一个序列 1,2,3,4,5 上,就得到了另一个序列 1,4,9,16,25:

            f(x) = x * x

                  │
  ┌───┬───┬───┬───┼───┬───┬───┬───┐
  │   │   │   │   │   │   │   │   │
  ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼

[1   2   3   4   5   6   7   8   9]

  │   │   │   │   │   │   │   │   │
  ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼   ▼

[1   4   9  16  25  36  49  64  81]

可见,map操作,把一个 Stream 的每个元素一一对应到应用了目标函数的结果上。

Stream<Integer> s = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> s2 = s.map(n -> n * n);

如果我们查看 Stream 的源码,会发现 map() 方法接收的对象是 Function 接口对象,它定义了一个 apply() 方法,负责把一个 T 类型转换成 R 类型:

<R> Stream<R> map(Function<? super T, ? extends R> mapper);

其中,Function的定义是:

@FunctionalInterface
public interface Function<T, R> {// 将 T 类型转换为 R:
    R apply(T t);
}

利用map(),不但能完成数学计算,对于字符串操作,以及任何 Java 对象都是非常有用的。例如:

import java.util.*;
import java.util.stream.*;

public class Main {public static void main(String[] args) {List.of("Apple", "pear", "ORANGE", "BaNaNa")
                .stream()
                .map(String::trim) // 去空格
                .map(String::toLowerCase) // 变小写
                .forEach(System.out::println); // 打印
    }
}

通过若干步 map 转换,可以写出逻辑简单、清晰的代码。

练习

使用 map() 把一组 String 转换为 LocalDate 并打印。

下载练习

小结

map()方法用于将一个 Stream 的每个元素映射成另一个元素并转换成一个新的Stream

可以将一种元素类型转换成另一种元素类型。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-08-05发表,共计1002字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中