[英]Is casting an expensive operation?
場景 :
我應該 :
我必須保持簡單。 有什么建議 ?
強制轉換不會更改對象占用的內存量。 它只是改變了運行時類型。
如果您可以按行進行這些操作,那么只需在循環內執行操作即可讀取單行。
while ((line = reader.readLine()) != null) {
line = process(line);
writer.println(line);
}
這樣,您每次只能在Java內存中只有一行而不是整個文件。
或者,如果您需要基於整個CSV文件執行這些操作(即,這些操作依賴於所有行),那么最有效的方法是將CSV文件導入真實的SQL數據庫,然后使用SQL語句來更改數據,然后再次將其導出為CSV文件。
我建議使用MappedByteBuffer(來自NIO),您可以使用它來讀取太大而無法放入內存的文件。 它只將文件的一個區域映射到內存中; 一旦你讀完這個區域(比如說,前10k),就要映射下一個區域,依此類推,直到你讀完整個文件。 內存效率高,易於實現。
Java Casts:喜歡
Object a = new String();
String b (String) a;
不貴。 - 無論你是否施放弦樂或任何其他類型。
您真正的增值將是將每行讀取為String,這在Java中非常簡單。 在它的字符串之后,在每個逗號上拆分字符串是微不足道的
String[] row = parsedRow.split(",");
對於數組中的每個值,您將擁有一個String,然后可以對其進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.