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);
}
> 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/
guess85 - 20 Dec 2007 16:46 GMT
> > 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
[quoted text clipped - 15 lines]
>
> Matt Humphreyhttp://www.iviz.com/
Now it runs correctly, thanks.