メモリ管理とパフォーマンスの面で優れた方法がある場合は、大きな文字列(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. Javaのエラー文字列(リスト<String>)
- 3. REGEX:大きな文字列の解析
- 4. Javaフィールド<String>対文字列
- 5. Java文字列の上付き文字
- 6. 分割大きな文字列を
- 7. 文字列テンプレートを '\ n'まで削除する大きい文字列 - Java
- 8. Java戻り文字列オブジェクト
- 9. Javaで大きな文字列定数を処理する
- 10. ColdFusion HTTP POST大きな文字列
- 11. LINQオブジェクトをJSON文字列にシリアル化する - 巨大な文字列
- 12. アンダースコアをJava文字列の大文字に置き換えます。
- 13. JavaのKDB - 文字列
- 14. データベースのVARCHAR2列の大きな文字列値の処理
- 15. Javaの:文字列:文字列
- 16. JavaのStringは日に別の文字列形式
- 17. 大きな文字列で特定の文字列をフィルタリングしますか?
- 18. 大文字の大文字文字列を検出する
- 19. のJava - 文字列
- 20. C#大きな文字セットの繰り返しでのChar置換文字列
- 21. 数字付きのJava文字列
- 22. std :: stringと文字列
- 23. 大きな文字列からワイルドカードを含む文字列を抽出する
- 24. 文字列をすべて大文字、小文字、逆Javaでファイルに出力
- 25. Javaでの文字列インデックス付きコレクション
- 26. 文字列をJavaのStringに追加するには?
- 27. 文字列の大きな文字列からデータ(文字列)を抽出する
- 28. C#string.split()別の文字列(大文字)
- 29. ユーザー入力文字列を大文字にするJava
- 30. 大文字と小文字を区別しないstd ::文字列のセット