fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10.  
  11. public static void main(String[] args) {
  12. List<PredicateInfo> predicateInfos = new ArrayList<>();
  13. predicateInfos.add(new PredicateInfo("a", "NOT_INITIATED"));
  14. predicateInfos.add(new PredicateInfo("b", "IN_PROGRESS"));
  15. predicateInfos.add(new PredicateInfo("c", "UNVERIFIED"));
  16. predicateInfos.add(new PredicateInfo("d", "VERIFIED"));
  17. predicateInfos.add(new PredicateInfo("e", "NOT_INITIATED"));
  18. predicateInfos.add(new PredicateInfo("f", "UNVERIFIED"));
  19. predicateInfos.add(new PredicateInfo("g", "IN_PROGRESS"));
  20.  
  21. List<String> predicateStatuses = new ArrayList<>();
  22. predicateStatuses.add("VERIFIED");
  23. predicateStatuses.add("IN_PROGRESS");
  24. predicateStatuses.add("UNVERIFIED");
  25. predicateStatuses.add("NOT_INITIATED");
  26.  
  27. predicateInfos.sort(Comparator.<PredicateInfo>comparingInt(predicateInfo -> predicateStatuses.indexOf(predicateInfo.getPredicateStatus()))
  28. .thenComparing(PredicateInfo::getPredicateName));
  29.  
  30. System.out.println(predicateInfos);
  31. }
  32.  
  33. static class PredicateInfo {
  34. String predicateName;
  35. String predicateStatus;
  36. public PredicateInfo(String predicateName, String predicateStatus) {
  37. this.predicateName = predicateName;
  38. this.predicateStatus = predicateStatus;
  39. }
  40.  
  41. public String getPredicateName() {
  42. return predicateName;
  43. }
  44.  
  45. public String getPredicateStatus() {
  46. return predicateStatus;
  47. }
  48. @Override
  49. public String toString() {
  50. return "(" + predicateName + " - " + predicateStatus + ")";
  51. }
  52. }
  53. }
Success #stdin #stdout 0.22s 33664KB
stdin
Standard input is empty
stdout
[(d - VERIFIED), (b - IN_PROGRESS), (g - IN_PROGRESS), (c - UNVERIFIED), (f - UNVERIFIED), (a - NOT_INITIATED), (e - NOT_INITIATED)]