[英]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.