JAVA

基础

        //collect(toList()) 方法由 Stream 里的值生成一个列表
        Stream.of("a", "b", "c").collect(Collectors.toList());

        //一种类型的值转换成另外一种类型
        Stream.of("a", "b", "c").map(e->e.toUpperCase()).collect(Collectors.toList());

        //遍历数据并检查其中的元素
        Stream.of("a", "b", "c").filter(e->e.equals("a")).collect(Collectors.toList());

        //flatMap 方法可用 Stream 替换值,然后将多个 Stream 连接成一个 Stream
        Stream.of(Arrays.asList("a", "b"),Arrays.asList("c", "d")).flatMap(e->e.stream()).collect(Collectors.toList());

        //min 查找最小
        List<User> users=new ArrayList<>();
        users.add(new User("jack",1));
        users.add(new User("tom",2));
        User user = users.stream().min(Comparator.comparing(e -> e.getAge())).get();

        //reduce 操作可以实现从一组值中生成一个值
        Stream.of(1, 2, 3).reduce(0,(acc,e)->acc+e);

        BinaryOperator<Integer> accumulator = (acc, element) -> acc + element;
        //reduce 展开
        int count = accumulator.apply(
                accumulator.apply(
                        accumulator.apply(0, 1),
                        2), 3);


        //summaryStatistics 统计
        IntSummaryStatistics trackLengthStats
                 = album.getTracks()
                        .mapToInt(track -> track.getLength())
                        .summaryStatistics();
         System.out.printf("Max: %d, Min: %d, Ave: %f, Sum: %d",
                           trackLengthStats.getMax(),
                           trackLengthStats.getMin(),
                           trackLengthStats.getAverage(),
                           trackLengthStats.getSum());

重构案例

//找到所有Album下的所有Track,检查lenth大于60的name 返回
public Set<String> findLongTracks(List<Album> albums) { 
    Set<String> trackNames = new HashSet<>(); 
    for(Album album : albums) {
        for (Track track : album.getTrackList()) { 
            if (track.getLength() > 60) {
                 String name = track.getName();
                 trackNames.add(name);
            }
        } 
    }
         return trackNames;
}
//flatMap:把所有的stream组合成一个
public Set<String> findLongTracks(List<Album> albums) { 
    return albums.stream().flatMap(album -> album.getTracks())
                 .filter(track -> track.getLength() > 60)
                 .map(track -> track.getName())
                 .collect(toSet());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值