美文网首页Java
安全创建 Java Stream

安全创建 Java Stream

作者: 空之古城 | 来源:发表于2020-03-07 18:40 被阅读0次

Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物,在这里沉淀我对下面三个语言特性结合使用的一些思考和心得:

  • Java Stream
  • Lambda 表达式
  • fork/join 线程模型

安全创建 Java Stream

使用示例:

package bigcrab;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * @author sky
 * @date 2020/3/5
 */
public class TestCreateStream {

    public void run() {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
        DataUtils.asStream(list).forEach(System.out::println);

        Map<Integer, String> map = null;
        DataUtils.asStream(map).forEach(System.out::println);
    }
}

DataUtils 类定义:

package bigcrab;

import java.util.Collection;
import java.util.Map;
import java.util.stream.Stream;

/**
 * @author sky
 * @date 2020/3/5
 */
public class DataUtils {

    /**
     * 基于 Collection 安全地获得一个 stream 对象
     *
     * @param collection
     * @param <T>
     * @return
     */
    public static <T> Stream<T> asStream(Collection<T> collection) {
        return collection == null ? Stream.empty() : collection.stream();
    }

    /**
     * 基于 Map 安全地获取一个 stream 对象
     *
     * @param map
     * @param <K>
     * @param <V>
     * @return
     */
    public static <K, V> Stream<Map.Entry<K, V>> asStream(Map<K, V> map) {
        if (map == null || map.size() == 0) {
            return Stream.empty();
        }
        return asStream(map.entrySet());
    }

    /**
     * 基于 Collection 安全地获得一个并行的 stream 对象
     *
     * @param collection
     * @param <T>
     * @return
     */
    public static <T> Stream<T> asParallelStream(Collection<T> collection) {
        return collection == null ? Stream.empty() : collection.parallelStream();
    }

    /**
     * 基于 Map 安全地获得一个并行的 stream 对象
     *
     * @param map
     * @param <K>
     * @param <V>
     * @return
     */
    public static <K, V> Stream<Map.Entry<K, V>> asParallelStream(Map<K, V> map) {
        if (map == null || map.size() == 0) {
            return Stream.empty();
        }
        return asParallelStream(map.entrySet());
    }

}

Reference

相关文章

  • 安全创建 Java Stream

    Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物,在这里沉淀...

  • java8 stream lambda

    记录Java8的stream操作,供自己复习。 创建Stream Employee类 创建stream方法 for...

  • Java8 Stream中间操作使用详解

    前面两篇简单的介绍了Stream以及如何创建Stream,没看的朋友可以戳这里: Java8的流(stream)简...

  • Stream API

    Stream是Java8中用于处理集合的API,利用函数式编程的思想方便的处理Java的集合类. 创建Stream...

  • JDK1.8流式编程

    1 生成流(Stream) 在 Java 8 中, 集合接口有两个方法来生成流: stream() − 为集合创建...

  • java学习

    Java ByteArrayInputStream类 Java 流(Stream) 字节数组输入流在内存中创建一个...

  • Java8新特性

    java.util.stream.Stream 注意事项 使用java.util.stream.Collector...

  • Java8 Stream API

    Stream API是Java8中处理集合的关键组件,提供了各种丰富的函数式操作。 Stream的创建 任何集合都...

  • Java8 Stream终端操作使用详解

    前情回顾 前几篇讲了Java8中Stream流的简介,创建流的方式,以及Stream流中间操作的使用详解,想回顾的...

  • 【Java8】以Supplier之名 打印Fibonacci数列

    讲道理一般我们想到斐波那契数列都会想起递归java8创建Stream除了 Stream.of() Arrays.s...

网友评论

    本文标题:安全创建 Java Stream

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