/* 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
) { List<PredicateInfo> predicateInfos = new ArrayList<>();
predicateInfos.add(new PredicateInfo("a", "NOT_INITIATED"));
predicateInfos.add(new PredicateInfo("b", "IN_PROGRESS"));
predicateInfos.add(new PredicateInfo("c", "UNVERIFIED"));
predicateInfos.add(new PredicateInfo("d", "VERIFIED"));
predicateInfos.add(new PredicateInfo("e", "NOT_INITIATED"));
predicateInfos.add(new PredicateInfo("f", "UNVERIFIED"));
predicateInfos.add(new PredicateInfo("g", "IN_PROGRESS"));
List<String> predicateStatuses = new ArrayList<>();
predicateStatuses.add("VERIFIED");
predicateStatuses.add("IN_PROGRESS");
predicateStatuses.add("UNVERIFIED");
predicateStatuses.add("NOT_INITIATED");
predicateInfos.
sort(Comparator.
<PredicateInfo
>comparingInt
(predicateInfo
-> predicateStatuses.
indexOf(predicateInfo.
getPredicateStatus())) .thenComparing(PredicateInfo::getPredicateName));
System.
out.
println(predicateInfos
); }
static class PredicateInfo {
public PredicateInfo
(String predicateName,
String predicateStatus
) { this.predicateName = predicateName;
this.predicateStatus = predicateStatus;
}
public String getPredicateName
() { return predicateName;
}
public String getPredicateStatus
() { return predicateStatus;
}
@Override
return "(" + predicateName + " - " + predicateStatus + ")";
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCQogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIExpc3Q8UHJlZGljYXRlSW5mbz4gcHJlZGljYXRlSW5mb3MgPSBuZXcgQXJyYXlMaXN0PD4oKTsKICAgICAgICBwcmVkaWNhdGVJbmZvcy5hZGQobmV3IFByZWRpY2F0ZUluZm8oImEiLCAiTk9UX0lOSVRJQVRFRCIpKTsKICAgICAgICBwcmVkaWNhdGVJbmZvcy5hZGQobmV3IFByZWRpY2F0ZUluZm8oImIiLCAiSU5fUFJPR1JFU1MiKSk7CiAgICAgICAgcHJlZGljYXRlSW5mb3MuYWRkKG5ldyBQcmVkaWNhdGVJbmZvKCJjIiwgIlVOVkVSSUZJRUQiKSk7CiAgICAgICAgcHJlZGljYXRlSW5mb3MuYWRkKG5ldyBQcmVkaWNhdGVJbmZvKCJkIiwgIlZFUklGSUVEIikpOwogICAgICAgIHByZWRpY2F0ZUluZm9zLmFkZChuZXcgUHJlZGljYXRlSW5mbygiZSIsICJOT1RfSU5JVElBVEVEIikpOwogICAgICAgIHByZWRpY2F0ZUluZm9zLmFkZChuZXcgUHJlZGljYXRlSW5mbygiZiIsICJVTlZFUklGSUVEIikpOwogICAgICAgIHByZWRpY2F0ZUluZm9zLmFkZChuZXcgUHJlZGljYXRlSW5mbygiZyIsICJJTl9QUk9HUkVTUyIpKTsKCiAgICAgICAgTGlzdDxTdHJpbmc+IHByZWRpY2F0ZVN0YXR1c2VzID0gbmV3IEFycmF5TGlzdDw+KCk7CiAgICAgICAgcHJlZGljYXRlU3RhdHVzZXMuYWRkKCJWRVJJRklFRCIpOwogICAgICAgIHByZWRpY2F0ZVN0YXR1c2VzLmFkZCgiSU5fUFJPR1JFU1MiKTsKICAgICAgICBwcmVkaWNhdGVTdGF0dXNlcy5hZGQoIlVOVkVSSUZJRUQiKTsKICAgICAgICBwcmVkaWNhdGVTdGF0dXNlcy5hZGQoIk5PVF9JTklUSUFURUQiKTsKCiAgICAgICAgcHJlZGljYXRlSW5mb3Muc29ydChDb21wYXJhdG9yLjxQcmVkaWNhdGVJbmZvPmNvbXBhcmluZ0ludChwcmVkaWNhdGVJbmZvIC0+IHByZWRpY2F0ZVN0YXR1c2VzLmluZGV4T2YocHJlZGljYXRlSW5mby5nZXRQcmVkaWNhdGVTdGF0dXMoKSkpCiAgICAgICAgICAgICAgICAudGhlbkNvbXBhcmluZyhQcmVkaWNhdGVJbmZvOjpnZXRQcmVkaWNhdGVOYW1lKSk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihwcmVkaWNhdGVJbmZvcyk7CiAgICB9CgkKCSBzdGF0aWMgY2xhc3MgUHJlZGljYXRlSW5mbyB7CiAgICAgICAgU3RyaW5nIHByZWRpY2F0ZU5hbWU7CiAgICAgICAgU3RyaW5nIHByZWRpY2F0ZVN0YXR1czsKICAgICAgICBwdWJsaWMgUHJlZGljYXRlSW5mbyhTdHJpbmcgcHJlZGljYXRlTmFtZSwgU3RyaW5nIHByZWRpY2F0ZVN0YXR1cykgewogICAgICAgICAgICB0aGlzLnByZWRpY2F0ZU5hbWUgPSBwcmVkaWNhdGVOYW1lOwogICAgICAgICAgICB0aGlzLnByZWRpY2F0ZVN0YXR1cyA9IHByZWRpY2F0ZVN0YXR1czsKICAgICAgICB9CgogICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJlZGljYXRlTmFtZSgpIHsKICAgICAgICAgICAgcmV0dXJuIHByZWRpY2F0ZU5hbWU7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFByZWRpY2F0ZVN0YXR1cygpIHsKICAgICAgICAgICAgcmV0dXJuIHByZWRpY2F0ZVN0YXR1czsKICAgICAgICB9CiAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgICAgcmV0dXJuICIoIiArIHByZWRpY2F0ZU5hbWUgKyAiIC0gIiArIHByZWRpY2F0ZVN0YXR1cyArICIpIjsKICAgICAgICB9CiAgICB9Cn0=