2011-07-05 7 views
0

現在、私はテキストファイルからデータ(段落/文字列)の塊を削り取り、新しいファイルに書き出しています。しかし、私は後でいくつかの条件文を追加する予定であるため、このデータを取り出して一時的な配列に格納し、条件が満たされていればファイルに書き出すことができるようにしたいと考えています。しかし、配列のサイズを事前に知らなくても配列に書き出す方法はわかりません。文章をJavaで一時配列に保存する方法は?

誰にもアイデアはありますか?

+0

配列のサイズについてわからない場合は、ArrayListを使用できます。 – Logan

答えて

8

アレイを使用しないでください。たとえば、ArrayListのように動的に拡張できるString型のコレクションを使用します。ここではいくつかの簡単なコードサンプルです:Sample 1Sample 2

のJavaドキュメントからのArrayListのメモリ管理に関する注意:

容量が リストの要素を格納するために使用される配列 の大きさであります。リストのサイズは常に少なくとも と同じくらい大きいです。要素が がArrayListに追加されると、その容量は に自動的に拡大します。 拡張ポリシーの詳細は指定されていません 要素の追加には一定の償却された時間コストがあることを除いて、 があります。

アプリケーションはensureCapacity 操作を用い 多数の要素を追加する前に、ArrayListのインスタンス の容量を増加させることができます。これにより、インクリメンタルな再割り当ての量が減少する可能性があります( )。

ドキュメントでさえ、物事が内部的にどのように管理されるかを指定していないことに注意してください。 Javaでは

+0

私はarraylistについて考えていましたが、arrayまたはarrayListのどちらの質問でも、文字列の大きさには限界がありますか?段落全体が単一の文字列として読み込まれますか? –

+0

文字列やコレクションの制限は非常に大きい傾向があり、ギグを考えて制限を考えないでください。彼らはめったに関心事ではありません。パラグラフがどのように解釈されるかについては、それはあなた次第であり、データファイルのフォーマットに依存します。 –

+0

申し訳ありません、ありがとうございます。私はArrayListを使ってみて、それがどうなるか見てみましょう。 –

2

ArrayList(またはJavaコレクションの他のタイプは)あなたのためのすべてのメモリ管理の世話をすることができます:

ArrayList<String> strings = new ArrayList<String>(); 

あなたは、文字列を追加したい場合は、次の

strings.add("New String"); 

あなたは、特定のインデックス(この例では、インデックス1)で文字列を取得したい場合:

strings.get(1); 

さらに多くのメソッドがArrayListクラスにもあります。

1

動的に増加するコレクションが必要です。 ArrayListが頭に浮かぶのは初めてのことです。内部的には通常の配列と非常によく似ていますので、必要に応じて高速ランダムアクセスが可能です。は、要素に順次アクセスする必要がある(ランダムアクセスは可能ですが、高速ではありません)必要がある場合、最終的に必要となる要素の数についての見積もりがない場合は、より適しています。

関連する問題