我有一个返回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时,它工作正常,但我也想返回列表。
答案 0 :(得分:4)
在您的函数中,每次调用函数时,初始化hmList = new ArrayList>();
都会创建一个新的空List
,因此在return
语句(无论如何,在同一个函数中是不可能的。)
答案 1 :(得分:-1)
由于 hmList 在我看来是一个静态变量,你可以返回此列表的副本并在返回之前清除 hmList ,如果你的规范是 hmList <返回你的函数时,/ em>应为空。