簡體   English   中英

從ArrayList創建制表符分隔的.txt表 <String> 矩陣

[英]Creating a tab-delimited .txt table from an ArrayList<String> matrix

我目前正在通過Java中的ArrayList<String>矩陣為Excel創建制表符分隔表。

矩陣是一個List<List<String> ,當前我將"\\t"添加到矩陣中的每個單個String並將"\\n"到每一行的最后一個元素。 我使用for循環來做到這一點。

對於1500 x 3000矩陣,此過程要耗費大量時間(120s)。

為了縮短時間,還有什么更好的方法可以解決此問題?

不知道您的矩陣是哪種方式,但是我可以構建類似的東西。 在這里看不到任何明顯的開銷。

private final List<List<String>> matrix;
private final String SEPARATOR = "\t";
private final String END_OF_LINE = "\n";

public TSVFormatter(List<List<String>> matrix) {
    this.matrix = matrix;
}

public String doParse() {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < matrix.size(); i++) {
        for (int o = 0; o < matrix.get(i).size(); o++) {
            sb.append(matrix.get(i).get(o));
            if (o <( matrix.get(i).size()-1))
                sb.append(SEPARATOR);
            else
                sb.append(END_OF_LINE);
        }
    }
    return sb.toString();
}

當您必須在循環中串聯時,最好使用StringBuilder

使用StringBuilder形成CSV記錄,然后使用BufferedWriter將它們寫入文件。 使用BufferedWriter會將內容保存在緩沖區中,並在緩沖區已滿后進行寫操作,從而避免對硬盤的連續訪問。

發布您的代碼,以便我們能夠以更好的方式提供幫助。

沒有代碼,很難提出任何具體建議,但是您要避免生成完整的字符串來編寫(以及所有相關的內存分配和垃圾回收),而只需遍歷數組,發出字符串,制表符和換行流到文件緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM