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. public static void main(String[] args) {
  11. List<MyClass> list = new ArrayList<>(Arrays.asList(
  12. new MyClass("Wald"),
  13. new MyClass("Arctic"),
  14. new MyClass("Hi"),
  15. new MyClass("Skip"),
  16. new MyClass(" Zulu")
  17. ));
  18.  
  19. Comparator<MyClass> myRules = new Comparator<MyClass>() {
  20.  
  21. @Override
  22. public int compare(MyClass o1, MyClass o2) {
  23. int order = getOrder(o1) - getOrder(o2);
  24. return (order != 0 ? order : o1.aString.compareTo(o2.aString));
  25. }
  26.  
  27. private int getOrder(MyClass m) {
  28. if (m.aString.startsWith(" ")) {
  29. return 0;
  30. }
  31. else if (m.aString.equals("Hi")) {
  32. return 1;
  33. }
  34. else {
  35. return 2;
  36. }
  37. }
  38. };
  39.  
  40. Collections.sort(list, myRules);
  41.  
  42. // Print the list
  43. for (MyClass e : list) {
  44. System.out.println(e);
  45. }
  46. }
  47. }
  48.  
  49. class MyClass implements Comparable<MyClass> {
  50.  
  51. String aString;
  52.  
  53. MyClass(String aString) {
  54. this.aString = aString;
  55. }
  56.  
  57. @Override
  58. public int compareTo(MyClass other) {
  59. return this.aString.compareTo(other.aString);
  60. }
  61.  
  62. @Override
  63. public boolean equals(Object o) {
  64. if (o == null || !getClass().equals(o.getClass())) {
  65. return false;
  66. }
  67. return Objects.equals(this.aString, ((MyClass) o).aString);
  68. }
  69.  
  70. @Override
  71. public int hashCode() {
  72. return 37 + Objects.hashCode(this.aString);
  73. }
  74.  
  75. public String toString() {
  76. return "MyClass(" + this.aString + ")";
  77. }
  78. }
Success #stdin #stdout 0.05s 2184192KB
stdin
Standard input is empty
stdout
MyClass( Zulu)
MyClass(Hi)
MyClass(Arctic)
MyClass(Skip)
MyClass(Wald)