Fazer uma Lista dentro de Outra

Bom dia senhores,
Me deparei com o seguinte problema, preciso percorrer uma lista dentro dentro de outra, na qual terei que desmanchar uma Lista de Tarefas para trazer todas as atividades, seria mais ou menos assim, trazer TODAS AS ATIVIDADES de TODAS As tarefas…

Alguem tem alguma idéia?

eu tentei iniciar ela mais to com muitas duvidas, segue o inicio do código:

    
       List<Tarefa> t = new ArrayList<Tarefa>();
        List<Atividade> a = new ArrayList<Atividade>();
        for(Tarefa obj :t){
            for(Atividade obj2: a){
                
            }
        }

e quais são as dúvidas?

de como trazer as Atividades das tarefas :S… tipo demachar todas as Tarefas e trazer todas as atividade… sendo que uma Tarefa tem muitas Atividades…

Olá,

ao que entendo, você tem um relacionamento entre objetos, que chamamos de associação.
Eu acredito que você quis dizer que Uma tarefa pode ter N atividades, não seria isso ?

Ou vice-versa, vai de sua interpretação.
Vamos supor que seja assim: uma tarefa pode ter associada a si n atividades.

No Java, você define seu objeto tarefa, assim:

public class Tarefa { // seus atributos List<Atividade> atividades; // getters e setters }

Agora vamos supor que tu tenha uma lista de tarefas e deseja percorrer ela e para cada tarefa buscar todas as suas respectivas atividades, seria isso:

for(Tarefa tarefa : listTarefas) { for(Atividade atividade : tarefa.getAtividades()) { // faz uma ação } }

Dessa forma, você tem em mãos todas as Tarefas e para cada Tarefa criada, você possui sua respectiva lista de Atividades.
Espero ter ajudado.

Abraços.

Mas como vc tem uma lista dentro da outra?

Voce deve ter uma lista de objetos e dentro de cada objeto tem um atributo Lista de outros objetos? É isso?

Então qual o problema.

Corre a primeira lista. Pega um objeto. Get da lista dentro do objeto. Corre ela.

É até bem comum.

Ou a tua idéia é uma lista de listas, algo assim:

List <List> listas = new ArrayList<List>();

.

O problema está na modelagem da classe.

Já que uma tarefa pode ter n ativiidades, então a classe Tarefa deveria ser mais ou menos assim:

public class Tarefa{
    String descricao;
    ArrayList<Atividade> atividades;
}

para percorrer todas as Tarefas, visualizando suas Tarefas ficaria mais ou menos assim:

for(Tarefa t : tarefas){
    System.out.println("Tarefa: "+t.getDescricao);
    for(Atividade a : t.getAtividades()){
        System.out.println("Atividade: "+a.getDescricao);
    }
    System.out.println("");

}

Entendeu?

Ola Nel isso mesmo é uma associação isso mesmo uma Tarefa pode ter N atividades…

Muito obrigado, vou tentar fazer desta forma! vou lhe passar o contesto todo. Antes dessas Tarefas eu tenho a função na qual cada usuario tem uma Função… 1*, eu vou fazer uma tela de Registro de Atividades, na qual o usuario tem que registrar suas atividades de acordo com sua função porem a Tarefa daquela respectiva atividade não poderá aparecer para o Usuario devido a regra de negócio da empresa…

Essa função é passada para um Criteria que me devolve as tarefas … ai acredito que com esse laço eu terei as atividades daquela função… muito obrigado! vou tentar aqui ;D

d34d_d3v1l me deu uma duvida nos relacionamentos das atividade…

Na entidade ATIVIDADE eu tenho um relacionamento com Tarefa que me retorna um objeto;

@ManyToOne(fetch= FetchType.EAGER,cascade= CascadeType.ALL)
@JoinColumn(name="id_tarefa")
private Tarefa tarefa;

para eu conserguir uma lista de atividades eu teria que fazer um telacionamento @OneToMany na entidade TAREFA certo?

[quote=nepsterbr]d34d_d3v1l me deu uma duvida nos relacionamentos das atividade…

Na entidade ATIVIDADE eu tenho um relacionamento com Tarefa que me retorna um objeto;

@ManyToOne(fetch= FetchType.EAGER,cascade= CascadeType.ALL)
@JoinColumn(name="id_tarefa")
private Tarefa tarefa;

para eu conserguir uma lista de atividades eu teria que fazer um telacionamento @OneToMany na entidade TAREFA certo?[/quote]

Minha opinião: dá como encerrado esse tópico e abre outro no de Persistência. Lá vai o pessoal com experiência em JDBC, SQL, JPA (seu caso) e etc.
Já que estamos em outra dúvida e não a que foi aberta por você.

Só complementando, a Tarefa precisa ter a referência as atividades mas o contrário não. A Atividade só vai existir se houver uma Tarefa, perfeito?
Sendo assim, no entity Tarefa deve possuir um relacionamento @OneToMany com as Atividades, ou seja, uma Tarefa pode ter N Atividades.

Correto nel, vou falar com a Galera do JPA,Hibernate,JDBC etc… obrigado, não vou passar este tópico como resolvido no momento ok? quando concluir irei fecha-lo até!

Claro cara, foi apenas uma sugestão, eu não mando em nada aqui (e em muitos outros lugares)! rss…
Foi apenas uma sugestão. Mas teste o que eu lhe disse, a principio irá resolver sua situação.

Forte abraço.

[quote]Claro cara, foi apenas uma sugestão, eu não mando em nada aqui (e em muitos outros lugares)! rss…
Foi apenas uma sugestão. Mas teste o que eu lhe disse, a principio irá resolver sua situação.

Forte abraço.[/quote]

Obrigado pela força, então para eu poder adicionar o resultado em uma tabela para mostrar ao usuario não é apenas fazer isso?

        for (Tarefa t : tarefas) {
            for (Atividade a : t.getAtividades()) {
                atividades.add(a);
            }
        }

É, mas veja bem, tem um detalhe ai.
Supondo que a lista “atividades” é que tu vai utilizar para preencher sua tabela, a única coisa é que para esse caso, vai apresentar TODAS as atividades, independentes da tarefa. Se quiser associar a atividade a tarefa, podes usar até um Map.

Mas enfim, basicamente é isso mesmo.

Não mais é exatamente isso que eu quero, mostrar TODAS as atividades independente da tarefa, pq antes de tudo isso eu tenho uma Entidade chamada Função que contem a função do usuário, quando ele entrar no sistema para Registrar alguma atividade haverá uma criteria que apresentara todas as tarefas daquela atividade, porem não sera mostrada ao usuário, pois ele somente poderá ver as atividades veinculadas aquela Função.

Porem está dando Lazing aqui =/ … vc tem algum tutorial que ensina a tratar este tipo de erro?

Agora você entrou especificamente em JPA.
Lazy é o que mais ocorre e depende diretamente de como está declarado seu Entity.
É um modo de evitar que objetos desnecessários sejam carregados e somente sejam buscados em banco no momento do get.

Creio que o ideal seja postar seu Entity, como está utilizando ele e o erro tudo lá no outro setor do fórum.

Dá uma lida:

http://www.guj.com.br/java/140625-jpa–hibernate—lazy-loading
http://facestutorials.icefaces.org/tutorial/dataTable-JPA-tutorial.html

Abraços.