在返回陈述后清除一个arraylist

时间:2016-01-11 16:15:29

标签: java arraylist

我有一个返回ArrayList的方法。我想在return语句之后清除或重新初始化数组列表,以便不重新填充旧数据。我知道我们可以使用arrayList.clear()语句,但我不确定将它放在代码中的位置,以便在返回数组列表后重新初始化。

我的代码段:

public static List<HashMap<String, String>> GetDataIteration(String strDataSheetPath, String sTCID) {
    HashMap<String, String> hm;
    //List<Map<String, String>> hmList = new ArrayList();
    //List<HashMap<String, String>> hmList = new ArrayList<HashMap<String, String>>();

        try {

            String sTestDataFile ="C:\\AutomationGoldCopy\\IEDSS_Automation\\src\\TestData\\Support\\Support_TC_001_AddUserBuildProfile1.xlsx";
            File file = new File(sTestDataFile);
            FileInputStream inputstream = new FileInputStream(file);
            Workbook wb = null;

            if (sTestDataFile.contains(".xlsx"))
            {
                wb = new XSSFWorkbook(inputstream);
            } else if (sTestDataFile.contains(".xls"))
            { 
              wb = new HSSFWorkbook(inputstream);
            }

            Sheet sheet = wb.getSheetAt(0);
            int count = sheet.getPhysicalNumberOfRows() ;

            System.out.println(count);
            for (int i=1 ; i <count ; i++)
            {   
                Row headerrow = sheet.getRow(0);
                hm = new HashMap<String, String>();
                System.out.println(i);      
                Row currentRow = sheet.getRow(i);
                for (int j = 0; j < headerrow.getPhysicalNumberOfCells(); j++) 
                {
                   Cell currentCell = currentRow.getCell(j,Row.CREATE_NULL_AS_BLANK);   
                   hm.put(headerrow.getCell(j).toString(), currentCell.toString());                
                }   
                //hmList.clear();
                hmList.add(hm); 

                for (HashMap<String, String> h : hmList) {
                    for (String key : h.keySet()) {
                        System.out.println(key + "\t" + h.get(key));
                    }
                        System.out.println("\n");
                    }
                // hmList.clear();
            }

        } catch (Exception e) {
            System.out.println(e);
        }

        return hmList;

    }

请帮助我。

主要方法:

public static void main(String [] args){

    String dtDataSheetPath = null;
    String dtTestCaseID = null;

    List<HashMap<String, String>> TestDataList = Excel.GetDataIteration(dtDataSheetPath,dtTestCaseID);
    for(Map<String, String> TestData : TestDataList) {

        String name = TestData.get("TestCase Name");
        String name1 = TestData.get("SMU_LastName");            
        System.out.println( "Got it : " + name + " " + name1);
    }       

excel中有三行。第一个是听众行,最后两行是标题值。 我正在将excel行转换为散列图,其中标题行为键,第二行和第三行为hashmap的值。

在第二次运行中(当i = 2时),第一行再次重新填充。我只想要第二排。当我清除ArrayList hmList时,它工作正常,但我也想返回列表。

2 个答案:

答案 0 :(得分:4)

在您的函数中,每次调用函数时,初始化hmList = new ArrayList>();都会创建一个新的空List,因此return语句(无论如何,在同一个函数中是不可能的。)

答案 1 :(得分:-1)

由于 hmList 在我看来是一个静态变量,你可以返回此列表的副本并在返回之前清除 hmList ,如果你的规范是 hmList <返回你的函数时,/ em>应为空。