Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / December 2007

Tip: Looking for answers? Try searching our database.

Why an ArrayList clear automatically?

Thread view: 
guess85 - 20 Dec 2007 14:41 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
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);
}
Matt Humphrey - 20 Dec 2007 15:39 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
> 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.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.