2017-12-28 48 views
1

아래 코드와 함께 요소를 동적으로 요소를 추가해야하는 방식으로 Object [] [] bookcomments를 변경하고 xlsx에 내용을 쓰기 위해 추가로 사용해야합니다. 파일.프리미티브를 사용하여 요소를 동적으로 2D 배열에 추가

문제 : 내가 직면 한 문제는 내가 사용한 것입니다. bookComments = new Object [] {} {{이름, 이메일, phNo, 스킬 셋}}};이 줄은 매번 2D 배열을 다시 초기화합니다.

귀하의 도움에 감사 드리며, 사전에 감사드립니다.

FileInputStream inputStream = new FileInputStream(new File(excelFilePath)); 
     Workbook workbook = WorkbookFactory.create(inputStream); 
     // headers of xlsx sheet - hard coded here 
     Object[][] bookComments = { { "name", "email", "Mobile number", "skillset" }, }; 
     Sheet newSheet = workbook.createSheet("org2"); 
     Iterator it = empSheet.entrySet().iterator(); 
     Iterator itAddress = addressSheet.entrySet().iterator(); 
     Iterator itSkillSheet = skillSheet.entrySet().iterator(); 
     while(it.hasNext()) { 
      Map.Entry eSheet = (Map.Entry)it.next(); 
      String email = null; 
      String skillset = null; 
      String name = (String) eSheet.getValue(); 
      String phNo = (String) eSheet.getKey(); 
      List<String> addressndEmail = addressSheet.get(phNo); 
      email = addressndEmail.get(1); 
      skillset = skillSheet.get(name); 
      bookComments = new Object[][]{{name,email,phNo,skillset},}; 
      //ArrayUtils.addAll(bookComments, bookComment); 

     } 

답변

1

아니요 한 번 생성 된 배열의 크기를 변경할 수 없습니다. 당신은 당신이 필요하다고 생각하는 것보다 더 큰 것을 할당해야하거나 그것을 재배치해야하는 오버 헤드를 수용해야합니다. 그것이 필요할 때 새로운 것을 할당하고 이전 데이터를 새로운 것으로 복사해야합니다. 다른 방법으로는 배열 대신 배열리스트를 사용할 수 있습니다.

나는 당신의 요구 사항을 모르는

i++; 
bookComments[i][0]=name; 
bookComments[i][1]=email; 
bookComments[i][2]=phNo; 
bookComments[i][3]=skillset; 

이 희망 처음

String[][] bookComments = new String[intSize][intSize]; 

지정 값 (루프 '난'과 같은 상태에서 증분 변수를 사용) 배열의 크기를 초기화해야 도와 드리겠습니다.

+0

Sreejesh 정말 고마워요. 이것은 좋은 접근 방법입니다. 나를 위해 일하고. 2018 년 새해 맞으 셨으면합니다. –