GregorianCalendar, atualizo uma variável a outra atualiza também

1 resposta
vitorkgb

Po acho q tá ruim de fazer essa atribuição aqui

List<GregorianCalendar> listaCalendar = new ArrayList<GregorianCalendar>();
GregorianCalendar calendar2 = new GregorianCalendar();
for(int i;i<dias;i++
{
    listaCalendar.add(calendar2);  

   calendar2.add(GregorianCalendar.DAY_MONTH,1);
}

se eu navegar pelos registros de listaCalendar, ele sempre vai dar a mesma data, pq? como faria certo, parece que ele adiciona o 1 dia em todos os calendar da lista, mesmo depois de adicionados

1 Resposta

wbdsjunior
vitorkgb:
Po acho q tá ruim de fazer essa atribuição aqui
List<GregorianCalendar> listaCalendar = new ArrayList<GregorianCalendar>();
GregorianCalendar calendar2 = new GregorianCalendar();
for(int i;i<dias;i++
{
    listaCalendar.add(calendar2);  

   calendar2.add(GregorianCalendar.DAY_MONTH,1);
}

se eu navegar pelos registros de listaCalendar, ele sempre vai dar a mesma data, pq? como faria certo, parece que ele adiciona o 1 dia em todos os calendar da lista, mesmo depois de adicionados


você está usando a mesma instância de GregorianCalendar sempre. Por isso, ao adicionar um dia à data e adicioná-la na lista, você faz referência à mesma instância. Você deve criar uma nova a cada repetição do for.

outras dica:
programe voltado a interface, não a implementação
.

List<Calendar> datas = new ArrayList<Calendar>();
datas.add(Calendar.getInstance()); // data atual. a da JVM.

for (int i = 1; i <= dias; i++) {
    Calendar data = Calendar.getInstance();
    data.add(Calendar.DAY_OF_MONTH, i);
    datas.add(data);
}
Criado 24 de janeiro de 2011
Ultima resposta 24 de jan. de 2011
Respostas 1
Participantes 2