How to reverse elements of a parallel stream in Java

2 Answers

0 votes
import java.util.List;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Stream;
import java.util.stream.Collector;
import java.util.stream.Collectors;
 
public class MyClass
{
    public static <T> Collector<T, ?, Stream<T>> reverse() {
        return Collectors.collectingAndThen(Collectors.toList(), list -> {
            Collections.reverse(list);
            return list.stream();
        });
    }
 
    public static void main(String[] args)
    {
        List<Integer> lists = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
 
        Stream<Integer> parallelstream = lists.parallelStream();
        
        parallelstream.collect(reverse()).forEach(System.out::println);
    }
}




/*
run:

7
6
5
4
3
2
1

*/

 



answered Mar 26, 2023 by avibootz
0 votes
import java.util.List;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.stream.Stream;
import java.util.stream.Collectors;
 
public class MyClass
{
    public static <T> Iterator<T> reverse(Stream<T> stream) {
        return stream.collect(Collectors.toCollection(LinkedList::new))
                    .descendingIterator();
    }
 
    public static void main(String[] args)
    {
        List<Integer> lists = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
 
        Stream<Integer> parallelstream = lists.parallelStream();
        
        Iterator<Integer> reverse = reverse(parallelstream);
        
        reverse.forEachRemaining(System.out::println);
    }
}




/*
run:

7
6
5
4
3
2
1

*/

 



answered Mar 26, 2023 by avibootz

Related questions

1 answer 168 views
168 views asked Mar 26, 2023 by avibootz
2 answers 349 views
2 answers 239 views
239 views asked Oct 5, 2023 by avibootz
...