Problema com conteudo de arraylist[Resolvido]

oi,
estou com um problema no meu arraylist tipo ao inves dele ir adicionando itens e aumentar o seu tamanho ele permanece com size 6 e sobreescreve os elementos assim o conteudo final dele é só os ultimos 6 modulos inseridos no mesmo!E eu só percebi este problema pq preciso adicionar o conteudo do arraylist na tela.
Meu codigo é o seguinte

[code]HashMap<String, ArrayList> mapaDisciplina = new HashMap<String, ArrayList>();
ArrayList listaDisciplinas = new ArrayList();

resultado = comando.executeQuery(“select Id_disciplina,modulo from disc_modulo where ensino=’”+1+"’");//order by Id_disciplina
while (resultado.next())
{
String disciplina = resultado.getString(1);//exemplo
ArrayList listaModulos = mapaDisciplina.get(disciplina);

								if (listaModulos == null) {  
								    listaModulos = new ArrayList<Integer>();  
								    listaDisciplinas.add(disciplina);   
								    mapaDisciplina.put(disciplina, listaModulos);  
								    
								}  
								int numeroDoModulo = resultado.getInt(2);  
								if (numeroDoModulo > listaModulos.size()) {  
							       int moduloAnterior = numeroDoModulo;  
							        listaModulos.add(numeroDoModulo);  
							        String[] arrayDeDisciplinas = listaDisciplinas.toArray(new String[0]);  
							       ArrayList<Integer> listaDeModulos = mapaDisciplina.get(arrayDeDisciplinas[0]);  
							      Integer[] arrayDeModulos = listaDeModulos.toArray(new Integer[0]);  
							    //tinha colocado um system aqui e o tamanho do arraylist ia aumentando conforme a

//inserção de dados mas quando chega no 6 para de aumentar e começa a sobreescrever
}
}[/code]
podem me ajudar a encontrar o erro no codigo?^
obrigada :slight_smile:

Paty, não entendi o porque do IF na linha 17. Acho que você deveria simplesmente adicionar o número do módulo no ArrayList e pronto. Qualquer outro processamento poderia ser feito depois do WHILE.

Se a intenção era evitar duplicá-lo (Por que estariam duplicados no banco?) então seria melhor usar um TreeSet ao invés de um ArrayList, com isso já sairiam ordenados e não repetidos.

Mas se quiser continuar com o ArrayList, pode usar o método “contains” para verificar se alguma coisa já foi adicionada na lista. Algo como o seguinte:

if (! listaModulos.contains(numeroDoModulo) ) {
    // continua aqui
}

ah acho que eu fiz algo errado pois continua aparecendo só os seis modulos na tela.
fia assim

[code]int numeroDoModulo = resultado.getInt(2);//exemplo
if (! listaModulos.contains(numeroDoModulo) ) {
int moduloAnterior = numeroDoModulo;
listaModulos.add(numeroDoModulo);
String[] arrayDeDisciplinas = listaDisciplinas.toArray(new String[0]);
System.out.println(“Adicionou:<” + disciplina + “><” + numeroDoModulo + “>”);
ArrayList listaDeModulos = mapaDisciplina.get(arrayDeDisciplinas[0]);
//Converter para array
Integer[] arrayDeModulos = listaDeModulos.toArray(new Integer[0]);
System.out.println(“Lista de modulos agora:<” + Arrays.toString(arrayDeModulos) + “>”);

								}[/code]

:frowning:
a tela ficou conforme o print em anexo
obrigada pela ajuda


Obrigada pela ajuda este problema foi resolvido no topico:
http://www.guj.com.br/java/236975-ajuda-para-inserir-itens-do-arraylist-na-tela/4
:slight_smile: