덤프가 데이터베이스 (이 경우에는 postgres)에 시트를 인쇄하는 유틸리티 코드를 작성하고 있습니다. 나는 poi의 HSSF 기술을 사용하여 Excel 시트를 처리했습니다. Excel의 각 열을 String 유형의 ArrayLists에 별도로 저장합니다. 이 경우 .xls의 열 수가 23보다 큰 경우 eclipse에서 'heap memory full'오류가 발생합니다. 내 질문은 이러한 arraylists 하나의 컬렉션 개체와 어떤 방법을 사용해야 결합 할 수 있습니까?여러 ArrayList를 단일 Collection Java로 대체하는 방법
public ArrayList<String> getList(String path, String srnoStr,
String nameStr, String dobStr, String genderStr, String addressStr,
String pinStr, String mobStr, String eIdStr, String categoryStr,
String branchStr) throws IOException, SQLException {
ArrayList<String> errorList = new ArrayList<String>();
ArrayList<String> cellError = null;
// String error=null;
// OrderedMap errorMap=new LinkedMap();
// errorMap=null;
List<Cell> cells_srno = new ArrayList<Cell>();
List<Cell> cells_name = new ArrayList<Cell>();
List<Cell> cells_dob = new ArrayList<Cell>();
List<Cell> cells_gender = new ArrayList<Cell>();
List<Cell> cells_address = new ArrayList<Cell>();
List<Cell> cells_pin = new ArrayList<Cell>();
List<Cell> cells_mob = new ArrayList<Cell>();
List<Cell> cells_eId = new ArrayList<Cell>();
List<Cell> cells_category = new ArrayList<Cell>();
List<Cell> cells_branch = new ArrayList<Cell>();
try {
int srnoIndex = 0;
srnoIndex = getIndex(srno, path);
cellError = fillList(srnoIndex, srNoId, cells_srno, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int nameIndex = 0;
nameIndex = getIndex(name, path);
cellError = fillList(nameIndex, nameId, cells_name, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int dobIndex = 0;
dobIndex = getIndex(dob, path);
cellError = fillList(dobIndex, dobId, cells_dob, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int genderIndex = 0;
genderIndex = getIndex(gender, path);
cellError = fillList(genderIndex, genderId, cells_gender, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int addressIndex = 0;
addressIndex = getIndex(address, path);
cellError = fillList(addressIndex, addressId, cells_address, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int pinIndex = 0;
pinIndex = getIndex(pin, path);
cellError = fillList(pinIndex, mobId, cells_pin, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int mobIndex = 0;
mobIndex = getIndex(mob, path);
cellError = fillList(mobIndex, pinId, cells_mob, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int eIdIndex = 0;
eIdIndex = getIndex(eId, path);
cellError = fillList(eIdIndex, eIdId, cells_eId, path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int categoryIndex = 0;
categoryIndex = getIndex(category, path);
cellError = fillList(categoryIndex, categoryId, cells_category,
path);
if (cellError != null)
errorList.addAll(cellError);
cellError = null;
int branchIndex = 0;
branchIndex = getIndex(branch, path);
cellError = fillList(branchIndex, branchId, cells_branch, path);
if (cellError != null)
errorList.addAll(cellError);
// System.out.println(cells);
int n = cells_srno.size();
int k = 0;
System.out.println("Total number Rows = " + (n - 1));
int j = 0;
// System.out.println("Column name=" +cells.get(0));
if (errorList.isEmpty()) {
for (int i = 1; i < n; i++) {
k = Insert(cells_srno.get(i), cells_name.get(i),
cells_dob.get(i), cells_gender.get(i),
cells_address.get(i), cells_pin.get(i),
cells_mob.get(i), cells_eId.get(i),
cells_category.get(i), cells_branch.get(i));
if (k > 0)
j++;
}
} else {
System.out.println("Error");
}
/*
* System.out
* .println("Total no. of physical row in you Excel Sheet=" + j);
* System.out
* .println("Operation Successfull!! kindly check the database!!! "
*);
*/
} catch (Exception e) {
e.printStackTrace();
}
return errorList;
}
엑셀 시트에있는 모든 열에 대해 클래스를 만들고 해당 클래스의 목록을 하나 만드는 것이 좋습니다. – eatSleepCode
u는 게터 세터를 의미합니까 ?? –
당신은 'cells_srno, cells_name, cells_dob 등'과 같은 필드를 가진'class'를 생성하고'List '를 만들 수 있습니다. 그래서 하나의 컬렉션 만 존재하게됩니다. –
eatSleepCode