package com.whn.hellospring.utils;

import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collector;

public class MyOptional {

    public static <T> List<T> toList(Optional<T> option) {
        return option.
                map(Collections::singletonList).
                orElse(Collections.emptyList());
    }

    public static <R, A, T> R collect(Optional<T> option, Collector<? super T, A, R> collector) {
        final A container = collector.supplier().get();
        option.ifPresent(v -> collector.accumulator().accept(container, v));
        return collector.finisher().apply(container);
    }
}