/* 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. */
enum Rara {
MA_ON("ST"),
MA_MAN("ST", "YS"),
MA_IP("ST", "YS", "IC"),
CODE("RC");
this.
codes = List.
of(codes
); }
private List<String> codes;
private static List<String> commonElements(List<String> list1, List<String> list2) {
List<String> common = new ArrayList<>(list1); // to avoid modifying `list1`
common.retainAll(list2); // leaves in `common` only elements from `list2`
return common;
}
public static Optional<Rara> getValue(List<String> values){
return Arrays.
stream(values
()) .
map(en
-> Map.
entry(en, commonElements
(en.
codes, values
).
size())) .filter(entry -> entry.getValue()>0)
}
}
class Ideone {
public static void main
(String args
[]){ System.
out.
println(Rara.
getValue(Arrays.
asList("ST",
"YS"))); // Optional[MA_MAN]
// Optional[MA_ON]
System.
out.
println(Rara.
getValue(Arrays.
asList("ST",
"RC"))); // Optional[MA_ON]
System.
out.
println(Rara.
getValue(Arrays.
asList("STB",
"RCC"))); //Optional.empty
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KZW51bSBSYXJhIHsKICAgIE1BX09OKCJTVCIpLAogICAgTUFfTUFOKCJTVCIsICJZUyIpLAogICAgTUFfSVAoIlNUIiwgIllTIiwgIklDIiksCiAgICBDT0RFKCJSQyIpOwoKICAgIFJhcmEoU3RyaW5nLi4uIGNvZGVzKSB7CiAgICAgICAgdGhpcy5jb2RlcyA9IExpc3Qub2YoY29kZXMpOwogICAgfQoKICAgIHByaXZhdGUgTGlzdDxTdHJpbmc+IGNvZGVzOwoKICAgIHByaXZhdGUgc3RhdGljIExpc3Q8U3RyaW5nPiBjb21tb25FbGVtZW50cyhMaXN0PFN0cmluZz4gbGlzdDEsIExpc3Q8U3RyaW5nPiBsaXN0MikgewogICAgICAgIExpc3Q8U3RyaW5nPiBjb21tb24gPSBuZXcgQXJyYXlMaXN0PD4obGlzdDEpOyAvLyB0byBhdm9pZCBtb2RpZnlpbmcgYGxpc3QxYAogICAgICAgIGNvbW1vbi5yZXRhaW5BbGwobGlzdDIpOyAvLyBsZWF2ZXMgaW4gYGNvbW1vbmAgb25seSBlbGVtZW50cyBmcm9tIGBsaXN0MmAKICAgICAgICByZXR1cm4gY29tbW9uOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgT3B0aW9uYWw8UmFyYT4gZ2V0VmFsdWUoTGlzdDxTdHJpbmc+IHZhbHVlcyl7CiAgICAgICAgcmV0dXJuIEFycmF5cy5zdHJlYW0odmFsdWVzKCkpCiAgICAgICAgICAgICAgICAubWFwKGVuIC0+IE1hcC5lbnRyeShlbiwgY29tbW9uRWxlbWVudHMoZW4uY29kZXMsIHZhbHVlcykuc2l6ZSgpKSkKICAgICAgICAgICAgICAgIC5maWx0ZXIoZW50cnkgLT4gZW50cnkuZ2V0VmFsdWUoKT4wKQogICAgICAgICAgICAgICAgLm1heChDb21wYXJhdG9yLmNvbXBhcmluZyhNYXAuRW50cnk6OmdldFZhbHVlKSkKICAgICAgICAgICAgICAgIC5tYXAoTWFwLkVudHJ5OjpnZXRLZXkpOwogICAgfQoKfQoKIGNsYXNzIElkZW9uZSB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKXsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oUmFyYS5nZXRWYWx1ZShBcnJheXMuYXNMaXN0KCJTVCIsICJZUyIpKSk7CiAgICAgICAgLy8gT3B0aW9uYWxbTUFfTUFOXQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oUmFyYS5nZXRWYWx1ZShBcnJheXMuYXNMaXN0KCJTVCIpKSk7CiAgICAgICAgLy8gT3B0aW9uYWxbTUFfT05dCgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihSYXJhLmdldFZhbHVlKEFycmF5cy5hc0xpc3QoIlNUIiwgIlJDIikpKTsKICAgICAgICAvLyBPcHRpb25hbFtNQV9PTl0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFJhcmEuZ2V0VmFsdWUoQXJyYXlzLmFzTGlzdCgiU1RCIiwgIlJDQyIpKSk7CiAgICAgICAgLy9PcHRpb25hbC5lbXB0eQogICAgfQp9Cg==