前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java1.8中stream的使用

java1.8中stream的使用

作者头像
gfu
发布2019-09-24 16:09:51
4230
发布2019-09-24 16:09:51
举报
文章被收录于专栏:gfugfu

一起尽在代码中,大家可以参考代码理解stream的各种操作

先把一些正常的中间条件以及结束条件罗列一下

Intermediate(中间操作): map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered

Terminal(结束操作): forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator

Short-circuiting(快速匹配): anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 limit


代码语言:javascript
复制
package org.gfu.base.stream;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * jdk1.8 stream application
 *
 * https://stackify.com/streams-guide-java-8/
 * @author 719383495@qq.com | 719383495qq@gmail.com | 有问题可以邮箱或者github联系我
 * @date 2019/9/22 12:48
 */
public class StreamMain {

    private static final int HASH_MAP_INIT_SIZE = 16;

    public static void main(String[] args) {
        Map map = new HashMap(HASH_MAP_INIT_SIZE);
        listStreamHandler03(StreamUnit.getStreamUnit());
        mapStreamHandler(map);

    }

    /**
     * stream basic operation
     *
     * @param list
     */
    private static void listStreamHandler(List<StreamUnit> list) {
        List<String> result = list
                .stream()
                .filter(i -> i.name.equals("zhangsan"))
                .map(i -> {
                    StreamUnit su = new StreamUnit();
                    su.name = i.name;
                    su.des = i.des;
                    return su;
                })
                .flatMap(i -> {
                    String[] ss = i.name.split("");
                    return Stream.of(ss);
                })
                .skip(2)
                .limit(5)
//                .peek()
//                .collect(Collectors.toSet())
                .collect(Collectors.toList());

        System.out.println(result);
    }

    /**
     * flatMap and reduce
     *
     * @param list
     */
    private static void listStreamHandler01(List<StreamUnit> list) {
        Optional<String> result = list
                .stream()
                .flatMap(i -> Stream.of(i.name.split("")))
                .reduce(String::concat);
        System.out.println(result);
    }

    /**
     * reduce params:{startValue, result , item}
     *
     * @param list
     */
    private static void listStreamHandler02(List<StreamUnit> list) {
        String result = list
                .stream()
                .flatMap(i -> Stream.of(i.name.split("")))
                .skip(4)
                .reduce("fadsf", String::concat);
        System.out.println(result);
    }

    /**
     * reduce params:{object, result , item}
     *
     * @param list
     */
    private static void listStreamHandler03(List<StreamUnit> list) {
        List<StreamUnit> initList = new ArrayList<>(1);
        List<StreamUnit> result = list.stream()
                .reduce(initList, (acc, i) -> {
                    System.out.println(acc);
                    StreamUnit su = new StreamUnit();
                    su.name = i.toString();
                    acc.add(su);
                    return acc;
                }, (u, i) -> u);
        
        System.out.println(result);
    }

    private static void mapStreamHandler(Map map) {
        map.entrySet().stream();
    }
}
``
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.09.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一起尽在代码中,大家可以参考代码理解stream的各种操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档