fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Ideone {
  6. public static void main(String[] args) {
  7. List<Conta> contas = Arrays.asList(
  8. new Conta("123", "4"),
  9. new Conta("567", "8"),
  10. new Conta("123", "4"),
  11. new Conta("999", "0"),
  12. new Conta("567", "8")
  13. );
  14.  
  15. // Set elimina as duplicações, e LinkedHashSet garante a mesma ordem do original
  16. Set<Conta> set = new LinkedHashSet<>(contas);
  17. // se quiser transformar em lista
  18. List<Conta> contasSemDuplicacao = new ArrayList<>(set);
  19.  
  20. System.out.println(contasSemDuplicacao);
  21. }
  22. }
  23.  
  24. class Conta {
  25.  
  26. private String numero, dv;
  27.  
  28. // duas contas são iguais se têm o mesmo número e dígito verificador
  29. @Override
  30. public boolean equals(Object obj) {
  31. if (this == obj) {
  32. return true;
  33. }
  34. if (obj == null) {
  35. return false;
  36. }
  37. if (getClass() != obj.getClass()) {
  38. return false;
  39. }
  40. final Conta other = (Conta) obj;
  41. if (!Objects.equals(this.numero, other.numero)) {
  42. return false;
  43. }
  44. return Objects.equals(this.dv, other.dv);
  45. }
  46.  
  47. // Se implementou equals, precisa também do hashCode
  48. @Override
  49. public int hashCode() {
  50. return Objects.hash(this.numero, this.dv);
  51. }
  52.  
  53. public Conta(String numero, String dv) {
  54. this.numero = numero;
  55. this.dv = dv;
  56. }
  57.  
  58. @Override
  59. public String toString() {
  60. return "Conta{" + "numero=" + numero + ", dv=" + dv + '}';
  61. }
  62. }
  63.  
Success #stdin #stdout 0.16s 53732KB
stdin
Standard input is empty
stdout
[Conta{numero=123, dv=4}, Conta{numero=567, dv=8}, Conta{numero=999, dv=0}]