Segue o código:
package Classes;
public class Conta {
protected String nome;
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
protected double saldo;
public double getSaldo() {
return this.saldo;
}
protected String agencia;
public String getAgencia() {
return this.agencia;
}
public void setAgencia(String agencia) {
this.agencia = agencia;
}
protected int numero;
public int getNumero() {
return numero;
}
/**
* Metodo para deposito;
* @param valor será usado como somatorio para o deposito;
*/
public void deposita(double valor) {
this.saldo += valor;
}
/**
* Metodo construtor;
* @param valor para setar saldo;
* @param texto para setar nome;
*/
public Conta(double valor, String texto, String txt) {
this.saldo = valor;
this.nome = texto;
this.agencia = txt;
}
/**
* Tratamento da classe String;
* Subiscrevendo a String toString() para tratamento de saida;
* Obrigatoriamente tem que receber um return;
*/
public String toString() {
return "A conta de: " + this.getNome() + " De Agência: " + this.getAgencia() + " Tem saldo de: " + this.getSaldo();
}
}
package Classes;
public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca>{
/**
* Construtor Herdado de Conta;
* @param valor
* @param texto
*/
public ContaPoupanca(double valor, String texto, String txt) {
super(valor, texto, txt);
}
/**
* Metodo para poder fazer a comparação das Contas Poupança;
* Se meu saldo for menor que o outro retorne -1;
* Se meu saldo for maior que o outro retorne +1;
* Quando o meu saldo comparado com o outro for -1 o meu saldo aparece antes na lista;
* Quando o meu saldo comparado com o outro for +1 o meu saldo aparece depois na lista;
* Assim com a comparação quando eu for imprimir, por ex, os saldos serão impressos em ordem crescente;
*/
@Override
public int compareTo(ContaPoupanca outra) {
if(this.saldo < outra.saldo) return -1;
if(this.saldo > outra.saldo) return 1;
return 0;
}
}
package Testes;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import Classes.ContaPoupanca;
public class TestaOrdenacao {
public static void main(String[] args) {
/**
* Criando um novo array e obrigando somente objetos tipo ContaPoupanca a entrar nele;
* Setando esse array em um List contas;
*/
List<ContaPoupanca> contas = new ArrayList<ContaPoupanca>();
/**
* Criando uma nova conta c1;
* Fazendo um deposito em c1;
* Adicionando c1 na lista contas;
*/
ContaPoupanca c1 = new ContaPoupanca(400, "Caio", "abc123");
c1.deposita(1500.0);
contas.add(c1);
/**
* Criando uma nova conta c2;
* Fazendo um deposito em c2;
* Adicionando c2 na lista contas;
*/
ContaPoupanca c2 = new ContaPoupanca(467, "Adriano", "abc123");
c2.deposita(2050.99);
contas.add(c2);
/**
* Criando uma nova conta c3;
* Fazendo um deposito em c3;
* Adicionando c3 na lista contas;
*/
ContaPoupanca c3 = new ContaPoupanca(230, "Victor", "abc123");
c3.deposita(1070.0);
contas.add(c3);
/**
* Usando o Collections.sort() para colocar a lista contas em ordem alfabetica;
*/
Collections.sort(contas);
/**
* Usando o foreach para passa do 1º elemento ao ultimo na lista contas;
* dai ir imprimindo um por um;
* Para cada String conta dentro de contas imprima;
*/
for (ContaPoupanca conta : contas) {
System.out.println(conta);
}
}
}