fork download
  1. import java.time.LocalDate;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.List;
  6.  
  7. public class Main {
  8. public static void main(String[] args) {
  9. Objeto o1 = new Objeto(1, "c", LocalDate.of(2018, 01, 1));
  10. Objeto o2 = new Objeto(2, "b", null);
  11. Objeto o3 = new Objeto(3, "a", LocalDate.of(2018, 01, 2));
  12.  
  13. List<Objeto> objetos = new ArrayList<>();
  14. objetos.add(o1);
  15. objetos.add(o2);
  16. objetos.add(o3);
  17.  
  18. System.out.println("SEM ORDENAÇÃO: ");
  19. for (Objeto objeto : objetos) {
  20. System.out.println(objeto);
  21. }
  22.  
  23. System.out.println("\n\nORDENADO PELO NÚMERO: ");
  24. Collections.sort(objetos, new ObjetoNumeroComparator());
  25. for (Objeto objeto : objetos) {
  26. System.out.println(objeto);
  27. }
  28.  
  29. System.out.println("\n\nORDENADO PELA PALAVRA: ");
  30. Collections.sort(objetos, new ObjetoPalavraComparator());
  31. for (Objeto objeto : objetos) {
  32. System.out.println(objeto);
  33. }
  34.  
  35. System.out.println("\n\nORDENADO PELA DATA: ");
  36. Collections.sort(objetos, new ObjetoDataComparator());
  37. for (Objeto objeto : objetos) {
  38. System.out.println(objeto);
  39. }
  40. }
  41. }
  42.  
  43. final class Objeto {
  44. private final int numero;
  45. private final String palavra;
  46. private final LocalDate data;
  47.  
  48. public Objeto(int numero, String palavra, LocalDate data) {
  49. this.numero = numero;
  50. this.palavra = palavra;
  51. this.data = data;
  52. }
  53.  
  54. public int getNumero() {
  55. return numero;
  56. }
  57.  
  58. public String getPalavra() {
  59. return palavra;
  60. }
  61.  
  62. public LocalDate getData() {
  63. return data;
  64. }
  65.  
  66. @Override
  67. public String toString() {
  68. return numero + " " + palavra + " " + data;
  69. }
  70. }
  71.  
  72. class ObjetoNumeroComparator implements Comparator<Objeto> {
  73. public ObjetoNumeroComparator() {
  74. }
  75.  
  76. @Override
  77. public int compare(Objeto o1, Objeto o2) {
  78. return o1.getNumero() - o2.getNumero();
  79. }
  80. }
  81.  
  82. class ObjetoPalavraComparator implements Comparator<Objeto> {
  83. public ObjetoPalavraComparator() {
  84. }
  85.  
  86. @Override
  87. public int compare(Objeto o1, Objeto o2) {
  88. String a = o1.getPalavra();
  89. String b = o2.getPalavra();
  90. return a == null && b == null ? 0
  91. : a == null ? 1
  92. : b == null ? -1
  93. : a.compareTo(b);
  94. }
  95. }
  96.  
  97. class ObjetoDataComparator implements Comparator<Objeto> {
  98. public ObjetoDataComparator() {
  99. }
  100.  
  101. @Override
  102. public int compare(Objeto o1, Objeto o2) {
  103. LocalDate a = o1.getData();
  104. LocalDate b = o2.getData();
  105. return a == null && b == null ? 0
  106. : a == null ? 1
  107. : b == null ? -1
  108. : a.compareTo(b);
  109. }
  110. }
Success #stdin #stdout 0.1s 28372KB
stdin
Standard input is empty
stdout
SEM ORDENAÇÃO: 
1 c 2018-01-01
2 b null
3 a 2018-01-02


ORDENADO PELO NÚMERO: 
1 c 2018-01-01
2 b null
3 a 2018-01-02


ORDENADO PELA PALAVRA: 
3 a 2018-01-02
2 b null
1 c 2018-01-01


ORDENADO PELA DATA: 
1 c 2018-01-01
3 a 2018-01-02
2 b null