Close

Java 8 Streams - Stream.min Examples

Java 8 Streams Java Java API 


Interface:

java.util.stream.Stream

java.lang.AutoCloseableAutoCloseablejava.util.stream.BaseStreamBaseStreamjava.util.stream.StreamStreamLogicBig

Method:

Optional<T> min(Comparator<? super T> comparator)

This terminal operation returns the minimum element of this stream according to the provided Comparator. This is a special case of a reduction.


Examples


package com.logicbig.example.stream;

import java.util.Arrays;
import java.util.Optional;

public class MinExample {

public static void main(String... args) {
String[] s = {"one", "two", "three", "four"};
Optional<String> min = Arrays.stream(s)
.min(String::compareTo);
if (min.isPresent()) {
System.out.println(min.get());
}
}
}

Output

four




package com.logicbig.example.stream;

import java.util.Arrays;
import java.util.Comparator;

public class MinExample2 {

public static void main(String... args) {
String[] s = {"aaaa", "aaa", "a", "aaaaa"};
String str = Arrays.stream(s)
.min(Comparator.comparingInt(String::length))
.orElseGet(String::new);
System.out.println(str);
}
}

Output

a




Using Stream#min method and comparing it with equivalent reduce operation:

package com.logicbig.example;

import java.util.Optional;
import java.util.stream.Stream;

public class MinExample {
public static void main (String[] args) {
runMin();
runEquivalentReduce();
}

private static void runMin () {
String s = Stream.of("banana", "pie", "apple")
.min(String::compareTo) //dictionary order
.orElse("None");

System.out.println(s);
}

private static void runEquivalentReduce () {
Optional<String> reduce = Stream.of("apple", "banana", "pie")
.reduce((s, s2) -> s.compareTo(s2) <= 0 ? s : s2);
System.out.println(reduce.get());
}
}

Output

apple
apple
Original Post




See Also