1

「量が不明」とは、それらを格納するために使用するデータ構造の作成時に、格納するオブジェクトの数がわからないことを意味します。これらすべてのオブジェクトを取得したら、それらすべてを反復処理できるようにしたいと考えています。アクセスする順序は関係ありません。時間と空間の点で最も効率的であると考えていますが、ほとんどの場合時間)Javaでこれを行う方法。

オブジェクト内に存在するオブジェクトの最大数に上限があるため、このサイズの配列を作成することだけを検討していました。しかし、私はスペースを無駄にしたくなかったので、配列は実際に格納される要素の数の 2 倍以上の大きさになる可能性がありました。

ハッシュマップのような他のものからイテレータを作成してそれを反復するよりも、それを反復する方が効率的かもしれないと思ったので、LinkedList も検討していました。しかし、さまざまな Java データ構造から反復子を作成するのにどれだけの費用がかかるかはわかりません。

それで、何かアイデアはありますか?

4

3 に答える 3

7

ArrayList を使用します。これにより、問題なくアイテムを反復処理できます。サイズが過度に制限されることはなく、事前にアイテムの数を知る必要もありません。

于 2012-04-27T01:24:53.080 に答える
3

私が理解できることから、動的配列が必要なようです。あなたの主な関心事はオブジェクトを反復処理することであり、構造の途中でオブジェクトを挿入/削除することはないと思います。その場合、Java ArrayList クラスがあなたのニーズによく合うと思います。

于 2012-04-27T01:34:26.060 に答える
0

ベクターを試すことができます。Javadocs からの簡単な要約: Vector クラスは、拡張可能なオブジェクトの配列を実装します。配列と同様に、整数インデックスを使用してアクセスできるコンポーネントが含まれています。ただし、Vector のサイズは、Vector の作成後に項目を追加および削除するために、必要に応じて拡大または縮小できます。

ランダム アクセスを提供し、ストレージの増分に合わせて最適化されています。また、マルチスレッドの要件がない場合は、非同期の ArrayList を使用できます。

于 2012-04-27T01:27:43.590 に答える