Hi,

  Thank u very much for all the support and your valuable advise.

Sudheer

-----Original Message-----
From: Dakota Jack [mailto:[EMAIL PROTECTED]
Sent: Monday, January 24, 2005 9:21 PM
To: Struts Users Mailing List
Subject: Re: OT newbie - java class question


The answer is to clone the Category object prior to setting the name
and add that clone to the IALOutpPut object.  I know you have not
asked, but I think you might want to make things a bit more readable
for others by doing at least something *like* as follows.  Your
present code is very hard to read, which is an important part of good
code.  I assume you are fairly new at this game and hope you take this
as an attempt to be helpful.  If you are a grizzlied veteran with your
own ideas, forget what I said.

/* This method takes all the Category held in ArrayLists
   objects from the HashMap category  (with a key of
   liTree.length or greater) and puts them in one master
   ArrayList (1ALOutPut) after processing their names. */

public ArrayList getCategoriesTree(Integer parentId, HashMap tree,
HashMap category) {
  return listTree(getLiTree(parentId,tree),category);
}


/* This method gets an array of Integers held in the HashMap
   tree under the key parentId. */

private Integer [] getLiTree(Integer parentId, HashMap tree) {
  return (Integer[])tree.get(parentId);
}

private static ArrayList listTree(Integer []   liTree,
                                             HashMap category) {

  /* The map category holds ArrayLists (which contain
     Category objects) which are temporarily processed
     under this alias.  The keys are integers relating
     to the length of liTree. */

  ArrayList lALCategories = null;

  /* This ArrayList holds all the Category objects in
     all the ArrayLists in category where the key is
     liTree.length or greater.  Prior to putting the
     Category objects in this extended ArrayList, the
     names in the Category objects are processed. */

  ArrayList lALOutPut     = null;

  Integer      liNext         = null;
  Category  lCCategory  = null;
  String      lsName       = null;
  int           treeLength   = liTree.length;
  int           arrayLength = 0;

        for (int i = 0; i < treeLength; i++) {
                liNextKey     = liTree[i];
                lALCategories = (ArrayList)category.get(liNextKey);
                arrayLength   = 1ALCategories.size();


                for (int j = 0; j < arrayLength; j++) {
                        lCCategory = (Category)lALCategories.get(j);
                        lsName = lCCategory.getName()
                        /*
                        Some processing here on lsName.
                        */
                        lCCategory.setName(lsName);
                        lALOutPut.add(lCCategory);
                }
        }
        return lALOutPut;
}

Jack


On Mon, 24 Jan 2005 14:29:21 +0530, Sudheer <[EMAIL PROTECTED]> wrote:
> Hi friends,
>
> I have a  method like this, the 3rd param, category contains
> ArrayList of classes Category.
>
> Here I am copying the  Category  class from the ArrayList to
> lALCategories (Line 11) and storing its property name into a
> local variable lsName (Line15) and doing some processing and
> writing it back on line 19.
>
> Then adding this class to lALOutPut. Here the changes I made
> to the class property name is  reflected in HashMap category
> also. I don't want the changes to be reflected in the passed
> HashMap category. How do I do this? Please help.
>
> TIA
>
> Sudheer
>
> 01. public static ArrayList listTree(Integer parentID, HashMap tree,
HashMap
> category)
> 02. {
> 03.    Category lCCategory = null;
> 04.    ArrayList lALCategories = new ArrayList(), lALOutPut = new
> ArrayList();
> 05.    Integer liNext = null;
> 06.    Integer liTree[] = (Integer[]) tree.get(parentID);
> 07.    String lsName = "";
> 08.    for (short liElm = 0; liElm < liTree.length; liElm++)
> 09.    {
> 10.      liNext = liTree[liElm];
> 11.      lALCategories = (ArrayList) category.get(liNext);
> 12.      for (int liIElm = 0; liIElm < lALCategories.size(); liIElm++)
> 13.      {
> 14.        lCCategory = (Category) lALCategories.get(liIElm);
> 15.    lsName = lCCategory.getName()
> 16.    /*
> 17.    Some processing here on lsName.
> 18.    */
> 19.        lCCategory.setName(lsName);
> 20.        lALOutPut.add(lCCategory);
> 21.      }
> 22.    }
> 23.    return lALOutPut;
> 24.}
>
>


--
------------------------------

"You can lead a horse to water but you cannot make it float on its back."

~Dakota Jack~

"You can't wake a person who is pretending to be asleep."

~Native Proverb~

"Each man is good in His sight. It is not necessary for eagles to be crows."

~Hunkesni (Sitting Bull), Hunkpapa Sioux~

-----------------------------------------------

"This message may contain confidential and/or privileged information.
If you are not the addressee or authorized to receive this for the
addressee, you must not use, copy, disclose, or take any action based
on this message or any information herein. If you have received this
message in error, please advise the sender immediately by reply e-mail
and delete this message. Thank you for your cooperation."

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to