Aplicar filtro em uma List

Olá pessoal,

Como posso fazer para se filtrar uma List por um determinado campo?
Eu tenho aqui uma classe ContaBancaria que possui um atributo com o número da agência de cada conta.
Se eu colocar todas as contas em uma List, como poderia fazer por exemplo para criar uma outra List contendo todos os números de agência sem repetição?

Um pouco braçal - use um “for”.

Como você quer remover as repetições, a idéia é usar um Set e copiar o resultado de volta. (Daqui a pouco eu posto o resultado)

import java.util.*;

class ContaBancaria {
    private int agencia;
    private int conta;
    private String nome;
    public ContaBancaria (int pAgencia, int pConta, String pNome) {
        agencia = pAgencia; conta = pConta; nome = pNome;
    }
    public int getAgencia() { return agencia; } 
    // etc.
    public String toString() {
        return "[agencia/conta = " + agencia + "/" + conta + "; nome = " + nome + "]";
    }
}

class TesteContas {
    public static void main(String[] args) {
        List <ContaBancaria> contas = new ArrayList <ContaBancaria> ();
        contas.add (new ContaBancaria (110, 234567, "Fernando Henrique"));
        contas.add (new ContaBancaria (220, 234567, "Luis Inacio"));
        contas.add (new ContaBancaria (110, 234567, "Paulo Salim"));
        // Imprimindo as contas
        System.out.println (contas);
        
        // Agora listando as agências sem repetição
        Set<Integer> agencias = new TreeSet<Integer>();
        for (ContaBancaria conta : contas) {
            agencias.add (new Integer (conta.getAgencia()));
        }
        // Imprimindo as agências, sem repetição
        System.out.println (agencias); // deve imprimir [110, 220]
    }
}

[quote=thingol]Um pouco braçal - use um “for”.

Como você quer remover as repetições, a idéia é usar um Set e copiar o resultado de volta. (Daqui a pouco eu posto o resultado)[/quote]

Obrigado, funcionou. Agora estou com outra dúvida… tem uma maneira fácil para se converter um Set em um List?

Estou usando um ObjectListDataProvider para fornecer os dados para um combo (em jsf), e não consigo associar a ele um Set, só a uma List.

Valeu, []s

List <Integer> listaAgencias = new ArrayList <Integer>();
listaAgencias.addAll (agencias); // onde agencias é o set que passei antes

thingol, como vocÊ faria pra imprimir o resultado da arraylist no java 1.4, onde você não pode fazer isso:

List contas = new ArrayList ();

Valeu!