import java.util.*;
import java.util.stream.*;
class O {
private final int id;
public O(final int id) { this.id = id; }
@Override
public String toString
() { return "" + id
; }}
class Ideone {
private static final O[] array = new O[]{
new O(1),
new O(2),
new O(3),
new O(4)
};
private static Optional<O> retrieve(final int id) {
if(id >= 0 && id < array.length)
return Optional.of(array[id]);
else
return Optional.ofNullable(null);
}
private static List<O> get(final List<Integer> ids) {
final List<O> result = new ArrayList<O>();
for(final int id : ids) {
final Optional<O> o = retrieve(id);
if(o.isPresent())
result.add(o.get());
else
System.
out.
println("[Error] Invalid ID: " + id
); }
return result;
}
public static void main
(final String[] arguments
) { final List
<Integer
> ids
= Arrays.
asList(0,
1,
2,
3,
4,
5,
6,
7,
8); final List<O> objects = get(ids);
System.
out.
println("Objects: [" + String.
join(", ", objects.
stream().
map(Object::toString
).
collect(Collectors.
toList())) + "]"); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS4qOwoKCmNsYXNzIE8gewoJcHJpdmF0ZSBmaW5hbCBpbnQgaWQ7CglwdWJsaWMgTyhmaW5hbCBpbnQgaWQpIHsgdGhpcy5pZCA9IGlkOyB9CglAT3ZlcnJpZGUgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsgcmV0dXJuICIiICsgaWQ7IH0KfQoKY2xhc3MgSWRlb25lIHsKCXByaXZhdGUgc3RhdGljIGZpbmFsIE9bXSBhcnJheSA9IG5ldyBPW117CgkJbmV3IE8oMSksCgkJbmV3IE8oMiksCgkJbmV3IE8oMyksCgkJbmV3IE8oNCkKCX07CgoJcHJpdmF0ZSBzdGF0aWMgT3B0aW9uYWw8Tz4gcmV0cmlldmUoZmluYWwgaW50IGlkKSB7CgkJaWYoaWQgPj0gMCAmJiBpZCA8IGFycmF5Lmxlbmd0aCkKCQkJcmV0dXJuIE9wdGlvbmFsLm9mKGFycmF5W2lkXSk7CgkJZWxzZQoJCQlyZXR1cm4gT3B0aW9uYWwub2ZOdWxsYWJsZShudWxsKTsKCX0KCglwcml2YXRlIHN0YXRpYyBMaXN0PE8+IGdldChmaW5hbCBMaXN0PEludGVnZXI+IGlkcykgewoJCWZpbmFsIExpc3Q8Tz4gcmVzdWx0ID0gbmV3IEFycmF5TGlzdDxPPigpOwogICAgCWZvcihmaW5hbCBpbnQgaWQgOiBpZHMpIHsKICAgIAkJZmluYWwgT3B0aW9uYWw8Tz4gbyA9IHJldHJpZXZlKGlkKTsKICAgIAkJaWYoby5pc1ByZXNlbnQoKSkKICAgIAkJCXJlc3VsdC5hZGQoby5nZXQoKSk7CiAgICAJCWVsc2UKICAgIAkJCVN5c3RlbS5vdXQucHJpbnRsbigiW0Vycm9yXSBJbnZhbGlkIElEOiAiICsgaWQpOwogICAgCX0KICAgIAlyZXR1cm4gcmVzdWx0OwoJfQoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKGZpbmFsIFN0cmluZ1tdIGFyZ3VtZW50cykgewogICAgCWZpbmFsIExpc3Q8SW50ZWdlcj4gaWRzID0gQXJyYXlzLmFzTGlzdCgwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4KTsKCQlmaW5hbCBMaXN0PE8+IG9iamVjdHMgPSBnZXQoaWRzKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9iamVjdHM6IFsiICsgU3RyaW5nLmpvaW4oIiwgIiwgb2JqZWN0cy5zdHJlYW0oKS5tYXAoT2JqZWN0Ojp0b1N0cmluZykuY29sbGVjdChDb2xsZWN0b3JzLnRvTGlzdCgpKSkgKyAiXSIpOwogICAgfQp9Cg==