当前位置: 首页>后端>正文

Java 8特性(一) 之 手写Stream流filter、map和forEach方法

Java 8特性(一) 之 手写Stream流filter、map和forEach方法

今天看了一下Java 8的Stream流,学习了一下函数式编程,这才感受函数式编程如此爽,之前就使用过ES8.7.1的函数式编程,当时就在想啥时候咱也能写出这么秀的代码,现在这不就给安排上了。下面的代码是参考了黑马程序的《Java 8流式编程》的教程写的,哈哈哈。

当中的map方法的参数为Function< T, R>,传入的参数是一个函数,与此同时map方法也被称之为高阶函数,它的定义为,传输参数为函数对象的方法称之为高阶函数。 下面就来简单的讲解一下Function< T, R>,这是一个拥有输入输出的过程,传入的参数类型为T,返回的参数类型为R,在程序中我写的函数式对象为item -> item * item

当中的filter方法参数为Predicate<T>,这个函数式接口的传入的类型为T,返回值为Boolean类型,拥有一个test方法。

当中的forEach方法参数为Consumer,这个函数式接口传入的参数为类型T,返回值类型为void,Consumer函数式接口拥有一个accept方法。

public class SimpleStream<T> {

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);

        SimpleStream.of(list)
                .filter(item -> (item & 1) == 0)
                .map(item -> item * item)
                .forEach(System.out::println);

    }

    /**
     * map方法
     *
     * @param function
     * @return
     * @param <R>
     */
    public <R> SimpleStream<R> map(Function<T, R> function) {
        List<R> result = new ArrayList<>();
        for (T t : collection) {
            R r = function.apply(t);
            result.add(r);
        }
        return new SimpleStream<R>(result);
    }

    /**
     * 过滤方法
     *
     * @param predicate
     * @return
     */
    public SimpleStream<T> filter(Predicate<T> predicate) {
        List<T> result = new ArrayList<>();
        for (T t : collection) {
            if (predicate.test(t)) {
                result.add(t);
            }
        }
        return new SimpleStream<T>(result);
    }

    /**
     * 循环遍历方法
     *
     * @param consumer
     */
    public void forEach(Consumer<T> consumer) {
        for (T t : collection) {
            consumer.accept(t);
        }
    }


    private Collection<T> collection;

    public SimpleStream(Collection<T> collection) {
        this.collection = collection;
    }

    public static <T> SimpleStream<T> of(Collection<T> collection) {
        return new SimpleStream<>(collection);
    }


}

Java 8特性(一) 之 手写Stream流filter、map和forEach方法,运行结果,第1张

写在最后

如果这篇【文章】有帮助到你,希望可以给【JavaGPT】点个赞👍,创作不易,如果有对【后端技术】、【前端领域】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 【JavaGPT】❤️❤️❤️,我将会给你带来巨大的【收获与惊喜】💝💝💝!


https://www.xamrdz.com/backend/3g81948190.html

相关文章: