Why an ArrayList clear automatically?

G

guess85

Hi everybody. I have two ArrayList "corso_list" and "corsoitems_list"
that I use like temporary array. When I filled up them, I save them in
two ArrayList that is a property of the object "a" and, at the
beginning of the while I clear the temp array. When I do this
operation, even the array in the object a were cleared. Why? Below
there is the code used. Thanks to all.

ArrayList corso_list = new ArrayList();
ArrayList corsoitems_list = new ArrayList();
while(iter.hasNext())
{
corso_list.clear();
corsoitems_list.clear();
a=new Assioma();
i=(Individual)iter.next();
l=(Literal) (i.getPropertyValue(model.getProperty(modello_conoscenza
+"nome_elemento_conoscenza")));
a.setNome(l.getString());
l=(Literal) (i.getPropertyValue(model.getProperty(modello_conoscenza
+"testo_assioma")));
a.setTesto(l.getString());
a.setTipo(((String)(lista_sottoclassi.get(j))));
iter1 = i.listPropertyValues(model.getProperty(modello_conoscenza
+"sono_riferiti"));
while (iter1.hasNext())
{
nome_corso = (String)(((Resource)(iter1.next())).getLocalName());
corso_temp=model.getIndividual(modello_conoscenza+nome_corso);

l=(Literal)corso_temp.getPropertyValue(model.getProperty(modello_conoscenza
+"nome_corso"));
corso_list.add(l.getString());
corsoitems_list.add(new SelectItem(nome_corso,l.getString()));
}
if ( !corsoitems_list.isEmpty() )
Collections.sort(corsoitems_list, new
ObjectComparator("getLabel",true));
a.setSono_riferiti(corso_list);
a.setSono_riferitiitems(corsoitems_list);
temp_list.add(a);
}
 
M

Matt Humphrey

guess85 said:
Hi everybody. I have two ArrayList "corso_list" and "corsoitems_list"
that I use like temporary array. When I filled up them, I save them in
two ArrayList that is a property of the object "a" and, at the
beginning of the while I clear the temp array. When I do this
operation, even the array in the object a were cleared. Why? Below
there is the code used. Thanks to all.

Most likely because you're not really saving them. This piece of code
a.setSono_riferiti(corso_list);
a.setSono_riferitiitems(corsoitems_list);

probably only saves the references to the lists--it does not create new
copies of the lists. Every "a" shares the same references to the lists so
when you clear them you lose the contents. If corso_list, corsoitems_list
are temporary, put their creation into the loop and skip the clearing
operations.

Matt Humphrey http://www.iviz.com/
 
G

guess85

Most likely because you're not really saving them. This piece of code


probably only saves the references to the lists--it does not create new
copies of the lists. Every "a" shares the same references to the lists so
when you clear them you lose the contents. If corso_list, corsoitems_list
are temporary, put their creation into the loop and skip the clearing
operations.

Matt Humphreyhttp://www.iviz.com/

Now it runs correctly, thanks.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top