Проблема: увеличение размера ArrayList - PullRequest
0 голосов
/ 01 апреля 2011

привет, я работаю с парсингом xml-файла, я возвращаю ArrayList класса Objects, но для каждого вызова этого метода размер ArrayList увеличивается с 0-8 и 8 до 16 и24 ... вместо создания нового объекта ArrayList .

Вот код:

public ArrayList<clsCategory> ParseCategoryXml(String fileToParse)
{
    try 
    {
        System.out.println("before XML Pasing Array size is = " + categoryArray.size());

            /** Handling XML */
            SAXParserFactory spf = SAXParserFactory.newInstance();
            SAXParser sp = spf.newSAXParser();
            XMLReader xr = sp.getXMLReader();

            /** Send URL to parse XML Tags */
            //URL sourceUrl = new URL("http://d.mobrobot.com/feeds/npv1/categories_Fox.xml");
            FileInputStream inputFile = new FileInputStream(fileToParse);
            /** Create handler to handle XML Tags ( extends DefaultHandler ) */
            xr.setContentHandler(this);
            xr.parse(new InputSource(inputFile));
    }
    catch (Exception e) 
    {
        System.out.println("XML Pasing Excpetion = " + e);
    }
    System.out.println("XML Pasing Array size is = " + categoryArray.size());
    return categoryArray;
}

Вывод на консоль для

XML Pasing Array size is = 8  //when First call of method
XML Pasing Array size is = 16  //when Secondcall of method

Может кто-нибудь объяснить мне, что происходит?

Ответы [ 2 ]

6 голосов
/ 01 апреля 2011

Я не думаю, что вы создаете новый ArrayList где-нибудь в вашем коде, поэтому каждый раз, когда вы запускаете код анализа, проанализированные элементы добавляются к старому.

Попробуйте что-то вроде:

categoryArray = new ArrayList<clsCategory>();

в начале метода.

2 голосов
/ 01 апреля 2011

похоже, что categoryArray не локальная переменная, это переменная экземпляра. Поэтому ее размер увеличивается при каждом вызове.

...