Search code examples
javadequearraydeque

Printing max element in a Deque<Integer>


I have a Deque from Integers, which I'm using as a Que. I have to add and remove elements from it and in some cases I need to print the max value in the Que.

The thing that I've tried is:

System.out.println(deque.stream().max(Integer::compareTo));

But it prints - Optional[the current max int].

Thank you!


Solution

  • That is because the max method of java.util.Stream returns your value wrapped in Optional. This is the signature of the max method Optional<T> max(Comparator<? super T> comparator);

    The example below would provide you the expected behaviour:

    Optional<Integer> optionalOfMax = deque.stream().max(Integer::compareTo);
    System.out.println(optionalOfMax.orElseThrow());