Can you split a stream into two streams?

前端 未结 10 831
栀梦
栀梦 2020-11-27 12:03

I have a data set represented by a Java 8 stream:

Stream stream = ...;

I can see how to filter it to get a random subset - for exa

10条回答
  •  暗喜
    暗喜 (楼主)
    2020-11-27 12:22

    Shorter version that uses Lombok

    import java.util.function.Consumer;
    import java.util.function.Predicate;
    
    import lombok.RequiredArgsConstructor;
    
    /**
     * Forks a Stream using a Predicate into postive and negative outcomes.
     */
    @RequiredArgsConstructor
    @FieldDefaults(makeFinal = true, level = AccessLevel.PROTECTED)
    public class StreamForkerUtil implements Consumer {
        Predicate predicate;
        Consumer positiveConsumer;
        Consumer negativeConsumer;
    
        @Override
        public void accept(T t) {
            (predicate.test(t) ? positiveConsumer : negativeConsumer).accept(t);
        }
    }
    

提交回复
热议问题