mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-18 08:50:57 +07:00
48 lines
1.0 KiB
Java
48 lines
1.0 KiB
Java
|
|
import java.util.Comparator;
|
|
import java.util.Optional;
|
|
import java.util.function.BinaryOperator;
|
|
import java.util.function.Consumer;
|
|
import java.util.stream.Stream;
|
|
|
|
class Bug {
|
|
|
|
public static void main(String[] args) {
|
|
Stream<String> tokenStream = Stream.of("hello", "world");
|
|
|
|
Comparator<String> order = Comparator.naturalOrder();
|
|
Min<String> min = tokenStream.collect(
|
|
() -> new Min<>(order),
|
|
Min::accept,
|
|
Min::combine);
|
|
|
|
System.out.printf("Min = %s%n",
|
|
min.asOptional().orElse(null));
|
|
}
|
|
|
|
static class Min<T> implements Consumer<T> {
|
|
|
|
private final BinaryOperator<T> minOf;
|
|
private T min;
|
|
|
|
public Min(Comparator<? super T> order) {
|
|
this.minOf = BinaryOperator.minBy(order);
|
|
}
|
|
|
|
@Override
|
|
public void accept(T t) {
|
|
this.min = min != null ? minOf.apply(min, t) : t;
|
|
}
|
|
|
|
public void combine(Min<T> other) {
|
|
if (other.min != null) {
|
|
accept(other.min);
|
|
}
|
|
}
|
|
|
|
public Optional<T> asOptional() {
|
|
return Optional.ofNullable(min);
|
|
}
|
|
}
|
|
}
|