在內存管理和性能的情況下存儲大字符串(超過300000個字符)是否是一種很好的做法,或者有更好的方法嗎?用於Java中大字符串的唯一字符串對象
0
A
回答
1
約翰·斯喬貝格的解釋是好的:
「這是如何使用這將決定實踐的String。」
如果30萬字,使你的String對象不駐留在用雙引號(」「),例如Java源文件位於外部文件中,那麼您可以使用不同的技術按塊或整體獲取字符串內容塊。看看這個例子:
FileInputStream fis = new FileInputStream("yourFile.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
byte [] buffer = new byte [ 8 ];
int bytesRead = 0;
String chunk = "";
while ((bytesRead = bis.read(buffer)) != -1)
chunk = new String(buffer, 0, bytesRead);
假設你處理可能出現的異常,在上面的代碼中你會得到你每次進入while循環時間的大小8個字節的字符串。因此,通過修改此代碼中的8字節數組大小,您可以更改塊大小,並在其他地方使用塊,打印它們等。
在您的示例中,您說您的字符串包含大約300000個字符。因此,將字節數組buffer
的大小設置爲4 x 300,000 = 1,200,000將使您獲得包含所有字符的單個字符串塊。
1
Java表示使用UTF-16
編碼的字符串,因此在最壞的情況下,每個字符爲4
字節。這給你一個粗略的4*300000/1024/1024 ~ 1.14MB
字符串,這本身並不壞。
這就是你如何使用確定實踐的字符串。
相關問題
- 1. 字符串唯一字符
- 2. Java中,字符串對象
- 3. 基於一對字符串生成一個唯一的字符串
- 4. Java - 使用名稱形式的對象字符串字符串
- 5. 當唯一字符串位於2個不同位置時,從較長字符串獲取唯一字符串
- 6. 計算字符串中的唯一字
- 7. 基於唯一子串的配對字符串
- 8. 字符串對象與Java中的OutputStreamWriter中的字符串字面量
- 9. 差 「字符串」 對象和字符串中的JavaScript字面
- 10. 唯一字符串組合
- 11. 基於一組有序的字符串生成直觀的唯一字符串?
- 12. 將字符串對象轉換爲Javascript中的字符串原始字符串
- 13. 什麼DS用於搜索Java中的一組字符串中的字符串?
- 14. Java地圖對象,其中包含要字符串的JSON字符串字段
- 15. 存儲在字符串池中唯一字符串lliterals?
- 16. android arraylist大量的字符串對象
- 17. Java內存在字符串[]中對多個字符串使用
- 18. 的Java Properties對象的字符串
- 19. 如何在Java中存儲唯一的字符串對?
- 20. 基於一串非alpha字符分割java字符串
- 21. <字符串,對象> - Java的
- 22. Java字符串到對象的列表
- 23. 將一個字符串到另一個字符串中的Java
- 24. Java的轉換{字符串,字符串} []地圖<字符串,字符串[]>
- 25. 字符串內部的Java字符串
- 26. JAVA字符串HTML大小
- 27. 字符串內部的Java字符串到字符串
- 28. 添加字符串文字和字符串對象的區別
- 29. 是否有等價於接受非唯一鍵的SortedList(字符串,字符串)
- 30. 字符串中的第一個唯一字符