/* 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
{
{
System.
out.
println(Messages.
isMessageInGroup("Another Message")); }
}
enum Messages {
MESSAGE_1("Message", "Category"),
MESSAGE_2("Another Message", "Category"),
MESSAGE_3("Odd Message", "Another Category");
private static final Map
<String, Set
<String
>> map
; static {
Map
<String, Set
<String
>> tempMap
= new HashMap
<>(); for (Messages m : Messages.values()) {
tempMap.computeIfAbsent(m.category, s -> new HashSet<>()).add(m.message);
}
}
private final String message, category
;
this.message = message;
this.category = category;
}
public String getMessage
() { return message
; } public String getCategory
() { return category
; }
public static boolean isMessageInGroup
(String message
){ // use `getOrDefault` if `get` could return null!!
return map.get("Category").contains(message);
}
public static Set
<String
> messagesInGroup
(String category
) { );
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVN5c3RlbS5vdXQucHJpbnRsbihNZXNzYWdlcy5pc01lc3NhZ2VJbkdyb3VwKCJBbm90aGVyIE1lc3NhZ2UiKSk7Cgl9CgkKfQoKZW51bSBNZXNzYWdlcyB7CgogICAgTUVTU0FHRV8xKCJNZXNzYWdlIiwgIkNhdGVnb3J5IiksCiAgICBNRVNTQUdFXzIoIkFub3RoZXIgTWVzc2FnZSIsICJDYXRlZ29yeSIpLAogICAgTUVTU0FHRV8zKCJPZGQgTWVzc2FnZSIsICJBbm90aGVyIENhdGVnb3J5Iik7CgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWFwPFN0cmluZywgU2V0PFN0cmluZz4+IG1hcDsKICAgIHN0YXRpYyB7CiAgICAgICAgTWFwPFN0cmluZywgU2V0PFN0cmluZz4+IHRlbXBNYXAgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgZm9yIChNZXNzYWdlcyBtIDogTWVzc2FnZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgdGVtcE1hcC5jb21wdXRlSWZBYnNlbnQobS5jYXRlZ29yeSwgcyAtPiBuZXcgSGFzaFNldDw+KCkpLmFkZChtLm1lc3NhZ2UpOwogICAgICAgIH0KICAgICAgICBtYXAgPSBDb2xsZWN0aW9ucy51bm1vZGlmaWFibGVNYXAodGVtcE1hcCk7CiAgICB9CgogICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbWVzc2FnZSwgY2F0ZWdvcnk7CgogICAgcHJpdmF0ZSBNZXNzYWdlcyhTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGNhdGVnb3J5KSB7CiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICAgICAgICB0aGlzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgICB9CgogICAgcHVibGljIFN0cmluZyBnZXRNZXNzYWdlKCkgeyByZXR1cm4gbWVzc2FnZTsgfQogICAgcHVibGljIFN0cmluZyBnZXRDYXRlZ29yeSgpIHsgcmV0dXJuIGNhdGVnb3J5OyB9CgogICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzTWVzc2FnZUluR3JvdXAoU3RyaW5nIG1lc3NhZ2UpewogICAgICAgIC8vIHVzZSBgZ2V0T3JEZWZhdWx0YCBpZiBgZ2V0YCBjb3VsZCByZXR1cm4gbnVsbCEhCiAgICAgICAgcmV0dXJuIG1hcC5nZXQoIkNhdGVnb3J5IikuY29udGFpbnMobWVzc2FnZSk7CiAgICB9CiAgICBwdWJsaWMgc3RhdGljIFNldDxTdHJpbmc+IG1lc3NhZ2VzSW5Hcm91cChTdHJpbmcgY2F0ZWdvcnkpIHsKICAgIAlyZXR1cm4gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KAogICAgICAgIAltYXAuZ2V0T3JEZWZhdWx0KGNhdGVnb3J5LCBDb2xsZWN0aW9ucy5lbXB0eVNldCgpKQogICAgCSk7Cgl9Cn0=