/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
public static void main
(String[] args
) {
ArrayList
<Integer
> collection
= new ArrayList(); for (int i = 0; i < 5000000; i++) {
collection.add(rnd.nextInt(5000000));
}
TreeSet<Integer> minValues = new TreeSet<Integer>();
TreeSet<Integer> maxValues = new TreeSet<Integer>();
collection.stream().forEach((v) -> {
handleMin(minValues, v);
handleMax(maxValues, v);
});
minValues.
stream().
forEach((v
) -> System.
out.
println("min = " + v
)); maxValues.
stream().
forEach((v
) -> System.
out.
println("max = " + v
)); }
public static void handleMin
(TreeSet
<Integer
> values,
Integer value
) { if (values.isEmpty() || value < values.last()) {
values.add(value);
}
if (values.size() > 5) {
values.pollLast();
}
}
public static void handleMax
(TreeSet
<Integer
> values,
Integer value
) { if (values.isEmpty() || value > values.first()) {
values.add(value);
}
if (values.size() > 5) {
values.pollFirst();
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBSYW5kb20gcm5kID0gbmV3IFJhbmRvbSgpOwoKICAgICAgICBBcnJheUxpc3Q8SW50ZWdlcj4gY29sbGVjdGlvbiA9IG5ldyBBcnJheUxpc3QoKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDUwMDAwMDA7IGkrKykgewogICAgICAgICAgICBjb2xsZWN0aW9uLmFkZChybmQubmV4dEludCg1MDAwMDAwKSk7CiAgICAgICAgfQoKICAgICAgICBUcmVlU2V0PEludGVnZXI+IG1pblZhbHVlcyA9IG5ldyBUcmVlU2V0PEludGVnZXI+KCk7CiAgICAgICAgVHJlZVNldDxJbnRlZ2VyPiBtYXhWYWx1ZXMgPSBuZXcgVHJlZVNldDxJbnRlZ2VyPigpOwoKICAgICAgICBjb2xsZWN0aW9uLnN0cmVhbSgpLmZvckVhY2goKHYpIC0+IHsKICAgICAgICAgICAgaGFuZGxlTWluKG1pblZhbHVlcywgdik7CiAgICAgICAgICAgIGhhbmRsZU1heChtYXhWYWx1ZXMsIHYpOwogICAgICAgIH0pOwoKICAgICAgICBtaW5WYWx1ZXMuc3RyZWFtKCkuZm9yRWFjaCgodikgLT4gU3lzdGVtLm91dC5wcmludGxuKCJtaW4gPSAiICsgdikpOwogICAgICAgIG1heFZhbHVlcy5zdHJlYW0oKS5mb3JFYWNoKCh2KSAtPiBTeXN0ZW0ub3V0LnByaW50bG4oIm1heCA9ICIgKyB2KSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIGhhbmRsZU1pbihUcmVlU2V0PEludGVnZXI+IHZhbHVlcywgSW50ZWdlciB2YWx1ZSkgewogICAgICAgIGlmICh2YWx1ZXMuaXNFbXB0eSgpIHx8IHZhbHVlIDwgdmFsdWVzLmxhc3QoKSkgewogICAgICAgICAgICB2YWx1ZXMuYWRkKHZhbHVlKTsKCiAgICAgICAgfQoKICAgICAgICBpZiAodmFsdWVzLnNpemUoKSA+IDUpIHsKICAgICAgICAgICAgdmFsdWVzLnBvbGxMYXN0KCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBoYW5kbGVNYXgoVHJlZVNldDxJbnRlZ2VyPiB2YWx1ZXMsIEludGVnZXIgdmFsdWUpIHsKICAgICAgICBpZiAodmFsdWVzLmlzRW1wdHkoKSB8fCB2YWx1ZSA+IHZhbHVlcy5maXJzdCgpKSB7CiAgICAgICAgICAgIHZhbHVlcy5hZGQodmFsdWUpOwoKICAgICAgICB9CgogICAgICAgIGlmICh2YWx1ZXMuc2l6ZSgpID4gNSkgewogICAgICAgICAgICB2YWx1ZXMucG9sbEZpcnN0KCk7CiAgICAgICAgfQogICAgfQp9