メモリ管理とパフォーマンスの面で優れた方法がある場合は、大きな文字列(300000文字以上)を唯一のStringオブジェクトに格納することをお勧めしますか?Javaの大きな文字列のSole Stringオブジェクト
0
A
答えて
1
ヨハン・シェーベルイの説明が良いです:
「それは練習を決定するであろう文字列を使用する方法です。」
文字列オブジェクトを構成する300,000文字が、二重引用符( "")で囲んだJavaソースファイルに存在しない場合。外部ファイルに存在する場合は、さまざまな手法を使用して、チャンクまたは全体としてStringコンテンツチャンクを取得できます。この例を見てみましょう:
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);
と仮定すると、あなたがサイズ8バイトの文字列を使用すると、whileループを入力するたびに取得する上では、コードで、可能性のある例外を処理します。したがって、このコードでは8のバイト配列サイズを変更することで、チャンクサイズを変更したり、他の場所でチャンクを使用したり、それらを印刷したりすることができます。
例では、文字列は約300000文字です。したがって、バイト配列buffer
のサイズをに設定すると、4 x 300,000 = 1,200,000になります。すべての文字を含む単一の文字列チャンクを取得できます。
1
JavaはUTF-16
エンコーディングを使用しているため、最悪の場合、各文字は4
バイトです。それはあなたにおおよそ4*300000/1024/1024 ~ 1.14MB
文字列を与えますが、それ自体はそれほど悪くありません。
これはあなたのやり方です練習を決定する文字列です。
関連する問題
- 1. Java文字列hashCode null string
- 2. コアStringオブジェクトのカスタム文字列クラスリファレンス
- 3. Javaのエラー文字列(リスト<String>)
- 4. JavaのString 16進文字列に
- 5. JavaのStringプール - 文字列はヒープ
- 6. 文字列の文字を大文字にするJava(Android)
- 7. 大きなサイズの文字列をJavaでログに記録
- 8. REGEX:大きな文字列の解析
- 9. Javaの文字列の大文字をカウントするには?
- 10. Javaフィールド<String>対文字列
- 11. Java文字列の上付き文字
- 12. 大きな文字列のRabin Karpアルゴリズム
- 13. 文字列テンプレートを '\ n'まで削除する大きい文字列 - Java
- 14. 分割大きな文字列を
- 15. のJava - スプリット2つの文字列と、単一のString配列
- 16. Java戻り文字列オブジェクト
- 17. Javascript:URLに大きなJSONオブジェクト/文字列を使用する
- 18. Pythonオブジェクトに大きなjson文字列をデシリアライズ
- 19. " "のxmlクエリから大きなサイズの文字列をJavaで分割する
- 20. Java配列の大文字と小文字を区別する
- 21. Javaで大きな文字列定数を処理する
- 22. HTTP文字列のJSONオブジェクトに変換するJava文字列
- 23. java内の文字列オブジェクトの作成
- 24. Javaの文字列の文字列
- 25. 変換のJSON文字列Javaオブジェクト
- 26. <文字列、オブジェクト> - Javaの
- 27. 大きな質問、文字列C
- 28. ColdFusion HTTP POST大きな文字列
- 29. アンダースコアをJava文字列の大文字に置き換えます。
- 30. LINQオブジェクトをJSON文字列にシリアル化する - 巨大な文字列