fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collections;
  5. import java.util.List;
  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<Conta> list = new ArrayList<Conta>();
  12.  
  13. Conta cc1 = new ContaCorrente();
  14. cc1.setNumero(1);
  15.  
  16. Conta cc2 = new ContaCorrente();
  17. cc2.setNumero(20);
  18.  
  19. Conta cc3 = new ContaCorrente();
  20. cc3.setNumero(25);
  21.  
  22.  
  23. list.add(cc1);
  24. list.add(cc2);
  25. list.add(cc3);
  26.  
  27. System.out.println(list);
  28. Collections.sort(list);
  29. System.out.println("------------");
  30. System.out.println(list);
  31.  
  32. }
  33.  
  34. static abstract class Conta implements Comparable<Conta> {
  35. protected double saldo;
  36. protected int numero;
  37. private int agencia;
  38. private String nome;
  39.  
  40. public double getSaldo() {
  41. return saldo;
  42. }
  43.  
  44. public void deposita(double valor) throws Exception {
  45. if (valor > 0) {
  46. this.saldo += valor;
  47. } else {
  48. throw new Exception();
  49. }
  50. System.out.println("Fim do deposita");
  51. }
  52.  
  53. public void saca(double valor) {
  54. this.saldo -= valor;
  55. }
  56.  
  57. public abstract void atualiza(double taxaSelic);
  58.  
  59. public int getNumero() {
  60. return numero;
  61. }
  62.  
  63. public void setNumero(int numero) {
  64. this.numero = numero;
  65. }
  66.  
  67. public int getAgencia() {
  68. return agencia;
  69. }
  70.  
  71. public void setAgencia(int agencia) {
  72. this.agencia = agencia;
  73. }
  74. public String getNome() {
  75. return nome;
  76. }
  77. public void setNome(String nome) {
  78. this.nome = nome;
  79. }
  80. @Override
  81. public boolean equals(Object obj) {
  82. if (!(obj instanceof Conta)){
  83. return false;
  84. }
  85. Conta c = (Conta)obj;
  86. return this.numero == c.numero || this.nome.equals(c.nome);
  87. }
  88. @Override
  89. public String toString() {
  90.  
  91. return "Conta de número " + this.numero;
  92. }
  93. }
  94. static class ContaCorrente extends Conta {
  95.  
  96. @Override
  97. public void atualiza(double taxaSelic) {
  98. this.saldo += (this.saldo * taxaSelic) * 2;
  99. }
  100.  
  101.  
  102. @Override
  103. public int compareTo(Conta o) {
  104. System.out.println("Vai ordenar: "+this.numero+" com "+o.numero);
  105. if(this.numero > o.numero){
  106. return -1;
  107. }
  108. if (this.numero < o.numero) {
  109. return 1;
  110. }
  111. return 0;
  112. }
  113. }
  114. }
Success #stdin #stdout 0.04s 711168KB
stdin
Standard input is empty
stdout
[Conta de número 1, Conta de número 20, Conta de número 25]
Vai ordenar: 20 com 1
Vai ordenar: 25 com 20
------------
[Conta de número 25, Conta de número 20, Conta de número 1]