私はJavaに比較的慣れていないので、何年にもわたって、収集する必要があるデータの数がプログラマーには本当にわからない、あらゆる種類のプログラミングの問題を解決しなければなりませんでした。
プログラマーが収集する必要のある変数の量を知る方法がない場合、リストを使用して文字列または整数値を収集するのは良い慣習ですか? または、Java で動的配列を使用してこれを処理するより良い方法はありますか?
私はJavaに比較的慣れていないので、何年にもわたって、収集する必要があるデータの数がプログラマーには本当にわからない、あらゆる種類のプログラミングの問題を解決しなければなりませんでした。
プログラマーが収集する必要のある変数の量を知る方法がない場合、リストを使用して文字列または整数値を収集するのは良い慣習ですか? または、Java で動的配列を使用してこれを処理するより良い方法はありますか?
疑わしい場合は、長さがわかっている場合でも、リストを使用する方が適切な選択となる可能性があります。
アレイを使用するとパフォーマンスが向上する可能性がありますが、これがいつ良いアイデアであり、ソリューションがより複雑になるのかを知るには、専門家である必要があります。
dynamic arrays
ところで: Javaのようなものはありません。
あなたはそれを正しくやっています。
List は Interface で、ArrayList は実装です。OO mambo-jumbo をあまり気にしない場合は、次のように理解できます。
リストは、「システム」を処理する方法です。他のことはあまり気にしません。
しかし、「システム」には、いくつかの方法でそれを実装する自由があります。ArrayList、LinkedList、Vector など。
この分離を理解したら、これらの実装間の違いとニュアンスを収集してみてください。
リスト (およびそのいとこである Map と Set) は、ほとんどすべてのユースケースに適しています。配列に比べてメモリを少し消費し、オーバーヘッドがわずかに増えますが、はるかに豊富な API を提供し、一般にインターフェイスに書き直されたコードは、静的に型指定された配列を使用するコードよりも再利用性と柔軟性に優れています。
java.util.Collections が許容できないオーバーヘッドを追加する可能性がある 1 つのケースは、プリミティブデータ型 (int、float など) を格納する場合です。そのような型を格納するには、ラッパーを使用する必要があるためです (コレクション クラスはオブジェクトのみを処理します)。 . ラッピングはほとんどオートボクシングに任せることができますが、メモリのオーバーヘッドに注意する必要があります。Apache Commons (および場合によっては他のライブラリ) も、プリミティブを直接操作するコレクションの実装を提供します。
避けられない場合にのみ、配列を操作する必要があります。
要素の数がわからないことだけが心配な場合は、リストのようなものが必要になります。動的配列によって、独自の配列を管理し、自分でサイズを変更したいと思いますか? あなたがそれがどのように機能するかを学びたくない限り、私はその努力を無駄にしません.
Java の良いところは、List が必要に応じてさまざまな実装 (ArrayList、LinkedList、Stack、Vector など) を持つインターフェイスであることです。
ArrayListがうまくいくようです。
要素のサイズが事前にわかっていて、要素が同じ型である場合は、配列が最適です。
それ以外の場合、リストは使用するのに最適なオプションです。