仅使用基元将元素动态添加到2D数组中

时间:2017-12-28 20:06:39

标签: java excel multidimensional-array apache-poi

使用下面的代码我需要以这样的方式更改Object [] [] bookcomments,我应该将元素动态添加到bookcomments中,并进一步使用它来将内容写入xlsx文件。

问题:我在这里遇到的问题是,我使用 bookComments = new Object [] [] {{name,email,phNo,skillset},}; 此行正在重新初始化我的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 个答案:

答案 0 :(得分:1)

不能一旦创建就无法更改数组的大小。您要么必须分配比您认为需要的更大的分配,要么接受必须重新分配的开销需要增长。当它发生时你必须分配一个新数据并将数据从旧数据复制到新数据,否则你可以使用数组列表而不是数组。

最初应该初始化数组的大小

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

指定值(在while循环中使用增量变量,如'i')

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

我不知道你的要求,希望这可以帮到你