HashMap<String, ArrayList<Integer>> mapaDisciplina = new HashMap<String, ArrayList<Integer>>();
ArrayList<String> listaDisciplinas = new ArrayList<String>();
....
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<Integer> 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
}
}
Problema com conteudo de arraylist[Resolvido]
P
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
podem me ajudar a encontrar o erro no codigo?^
obrigada :)
3 Respostas
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
}
P
ah acho que eu fiz algo errado pois continua aparecendo só os seis modulos na tela.
fia assim
:(
a tela ficou conforme o print em anexo
obrigada pela ajuda

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<Integer> 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) + ">");
}

P
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

Criado 7 de abril de 2011
Ultima resposta 7 de abr. de 2011
Respostas 3
Participantes 2