Gente, eu tenho duas listas: listGrade e listMateria. Eu quero q aconteça a seguinte coisa: para cada materia q está na listMateria verifique-se se já existe alguma grade onde ela jah foi inserida pelo metodo verificaExiste. Caso ela nunca tenha sido inserida, quero criar um novo objeto do tipo grade e passá-la como parâmetro.
Agora, caso ela já tenha sido inserida em uma grade, eu quero verificar se a proxima máteria da lista também já foi inserida nesta mesma grade. Caso não, desejo inserir nesta grade esta proxima materia. Mas se já existir uma grade q contenha a as duas materias, eu verifico se já existe uma grade q contenha a proxima materia da lista, ou seja a terceira materia… e assim sucessivamente até acaberem todos os elementoas da listMateria.
Eu fiz o seguinte trecho de código, mas me perdi na hora de passar para o próximo elemento da lista caso a materia atual já tena sido inserida numa grade… Vocês podem me ajudar? Obrigada!
O que você quer fazer com esse objeto grade que você está criando?
(do jeito que está, assim que o objeto é criado o gc já o ‘‘destroi’’…
[editanto]esse cast é desnecessário:
Materia materia = (Materia) it.next();
//isto deveria funcionar, se listMateria for um List<Materia>
Materia materia = it.next();
[/editando]
oitathi
a sim, esse novo elemento grade q foi criado, eu quero inseri-lo na listGrade…
Iteratoriterator=listGrade.iterator();for(Iterator<Materia>it=listMateria.iterator();it.hasNext();){Materiamateria=(Materia)it.next();while(iterator.hasNext()){Gradegrade=(Grade)iterator.next();if(!(grade.verificaExistente(materia.getNome()+" "+materia.getTurma()))||listGrade.isEmpty()){newGrade(materia);listGrade.add(grade)}//end if}//end forSystem.out.println("--------------------");}//end for
Dei uma corrigida… vê se melhorou, obrigada!
drigo.angelo
Eu fiquei meio confuso… :oops:
Deixa eu recapitular:
Você tem uma lista de matérias e uma de grades
E vai percorrer a lista de matérias e ver se cada matéria já está em uma grade
SE estiver em uma grade:
Vai percorrer as próximas matérias e ver se já existe uma grade com (aqui eu me perdi)
[editando]Isto aqui vai ser a parte do “else” no seu código [/editando]
SE não estiver em nenhuma grade:
Vai criar uma grade, passar a matéria como parâmetro e adicionar na lista de grades 8)
Quanto a esse código, acho que seria melhor mudar essas linhas:
new Grade(materia);
listGrade.add(materia)
//troca por
Grade g = new Grade(materia);
listGrade.add(g);
oitathi
Assim, eu tenho uma lista de materias e outra de grades. A principio, a minha lista de grades está vazia e minha lista de materia está completa.
Agora vamos por passos:
Na primeira vez como a lista de grades vai estar vazia, vai ser criada uma nova grade com essa materia.
Dai eu quero voltar novamente para o começo da listMateria e verificar se já existe uma grade com a primeira materia junto com a segunda, se não existir, eu quero (tentar*) inserir a segunda materia na grade onde foi inserida a primeira.
(*Eu tenho um metodo que verifica se é possivel que as materias sejam inclusas na mesma grade, porque pode haver casos onde há comflito de horários entre as materias, então , se a materia posterior, tiver o mesmo horario da anterior, ela não será incluida na grade)
3)Dai eu quero fazer isso para todas as materia da lista, ou seja verificar se já existe uma grade que contenha a materia do contador atual, com o próximo…
4)Quando já forem feitas todas as verificações de grade do primeiro elemento com todos os demais da lisMateria, eu quero passar para o segundo o elemento dessa lista e começar tudo de novo…
drigo.angelo
Acho que eu entendi o que você quer, mas também não estou encontrando uma maneira eficiente de fazer isso…