美文网首页
常用的Stream API

常用的Stream API

作者: 柚子过来 | 来源:发表于2018-02-04 16:54 被阅读0次

    中间操作:返回一个新的stream

    操作 描述 操作参数 函数描述符
    filter 过滤元素 Predicate<T> T->boolean
    map 对流元素操作生成一个新元素组成的流 Function<T,R> T->R
    flatMap 对流每个元素本身就是一个流,那该操作将所有流合并到一起
    limit 截取前n个元素
    skip 丢弃前n个元素
    sorted 排序 Comparator<T> (T,T)->int
    distinct 去重



    终端操作:结束并返回结果

    操作 描述
    forEach 遍历流中的每一个元素,并根据lamba消费它
    count 返回流中元素的个数
    collect 将流中元素归约为一个集合并返回,如List,Map
    anyMatch/allMatch/noneMatch 返回boolean。Predicate<T>,T->boolean
    findAny/findFirst 返回Optional<T>
    reduce 从一组值中生成一个值,需要给定一个初始值,然后它会根据lamba无限迭代操作



    举个使用StreamAPI的例子:
    从一个唱片集albums(一个albums里面有很多tracks)里面找出长度大于一分钟的歌曲放入结果Set中。

    以前的写法:

    public Set<String> findLongTrcks(List<Album> albumList) {
        Set<String> result = new HashSet<>();
        for (Album album: albumList) {
            for(Track track:album.getTrackLists()) {
                if(track.getLength()>60) {
                    result.add(track.getName());
                }
            }
        }
        return result;
    }
    

    使用Stream的写法:

     public Set<String> findLongTrcks(List<Album> albumList) {
        
        return albumList.stream()
                .flatMap(Album->Album.getTrackLists())
                .filter(track->track.getLength>60)
                .map(track->track.getName())
                .collect(Collectors.toSet());
    }
    

    相关文章

      网友评论

          本文标题:常用的Stream API

          本文链接:https://www.haomeiwen.com/subject/rzwmzxtx.html