/* package whatever; // don't place package name! */
import java.util.*;
import java.util.stream.Collectors;
import java.util.function.Function;
import static java.util.stream.Collectors.toMap;
enum A {
A1, A2, A3;
}
interface B {
Set<A> getSetOfA();
}
class B1 implements B {
@Override
public Set
<A
> getSetOfA
() { return Collections.
singleton(A.
A1); } }
class B2 implements B {
@Override
public Set<A> getSetOfA() {
return new HashSet
<>(Arrays.
asList(A.
A2, A.
A3));
}
}
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Set
<B
> setOfB
= new HashSet
<>(Arrays.
asList(new B1
(),
new B2
()));
Map
<A, B
> map
= Arrays.
stream(A.
values()) .collect(toMap(Function.identity()
, a -> setOfB.stream()
.filter(b -> b.getSetOfA().contains(a))
.findAny()
));
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Db2xsZWN0b3JzOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLkZ1bmN0aW9uOwppbXBvcnQgc3RhdGljIGphdmEudXRpbC5zdHJlYW0uQ29sbGVjdG9ycy50b01hcDsKCgplbnVtIEEgewoJQTEsIEEyLCBBMzsKfQoKCgppbnRlcmZhY2UgQiB7CglTZXQ8QT4gZ2V0U2V0T2ZBKCk7Cn0KCmNsYXNzIEIxIGltcGxlbWVudHMgQiB7CglAT3ZlcnJpZGUKCXB1YmxpYyBTZXQ8QT4gZ2V0U2V0T2ZBKCkgeyByZXR1cm4gQ29sbGVjdGlvbnMuc2luZ2xldG9uKEEuQTEpOyB9Cn0KCmNsYXNzIEIyIGltcGxlbWVudHMgQiB7CglAT3ZlcnJpZGUKCXB1YmxpYyBTZXQ8QT4gZ2V0U2V0T2ZBKCkgewoJCXJldHVybiBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QoQS5BMiwgQS5BMykpOyAKCQkKCX0KfQoKCgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVNldDxCPiBzZXRPZkIgPSBuZXcgSGFzaFNldDw+KEFycmF5cy5hc0xpc3QobmV3IEIxKCksIG5ldyBCMigpKSk7CgkJCgkJTWFwPEEsIEI+IG1hcCA9IEFycmF5cy5zdHJlYW0oQS52YWx1ZXMoKSkKICAgICAgICAgICAgLmNvbGxlY3QodG9NYXAoRnVuY3Rpb24uaWRlbnRpdHkoKQogICAgICAgICAgICAgICAgLCBhIC0+IHNldE9mQi5zdHJlYW0oKQogICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoYiAtPiBiLmdldFNldE9mQSgpLmNvbnRhaW5zKGEpKQogICAgICAgICAgICAgICAgICAgIC5maW5kQW55KCkKICAgICAgICAgICAgICAgICAgICAub3JFbHNlVGhyb3coKCkgLT4gbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGEgKyAibm90IHN1cHBvcnRlZCIpKQogICAgICAgICAgICApKTsKICAgICAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG1hcCk7ICAgIAoJCQoJfQp9