计算List的总大小<String[]>

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

嗨,我有一份清单

List<String[]> csvRows, String[] csvHeaderRow
我的目标是计算我将从这些行中写出的最终 CSV 文件的总大小,因此我应该添加所有逗号、csvRows、csvHeaderRow 的总大小。请注意,csvRows 中的许多列可能为空,例如“Rick,,,,15,,4324,,”,csvHeaderRow 将始终被完全填充。

我可以将这些全部写入 bytearrayStream 并计算 byteArray 的长度。但我想编写更高效、更简洁的代码。

最新代码版本:

  public void long getNumOfFiles(List<String[]> csvRows, String[] csvHeaderRow){
long totalSize = csvRows.stream().mapToLong(i -> {
        return Stream.of(i).mapToLong(str -> {
            if (StringUtils.isNotEmpty(str)) {
                return str.getBytes().length;
            }
            return 0L;
        }).sum();
    }).sum();
    
            totalSize = totalSize + Stream.of(csvHeaderRow).mapToLong(str -> str.getBytes().length).sum();
            totalSize = totalSize + csvHeaderRow.length * csvRows.size() + 1; -> number of commas
            long numOfFiles = (totalSize / MAX_FILE_SIZE_BYTES) + 1;
return numOfFiles;
}

如何更有效地写这个?

java arrays list stream size
© www.soinside.com 2019 - 2024. All rights reserved.