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

问题描述 投票:1回答:1

使用下面的代码我需要以这样的方式更改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);

        }
java excel multidimensional-array apache-poi
1个回答
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;

我不知道你的要求,希望这对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.