2011-01-10 5 views
2

私には集団化されたアーリーリストがあります(このAと呼んでください)。私にはもう一人のarraylistがいて、それには人口も多い(このBと呼ぶ)。何も上書きしないで2人の人口密集したarraylistsをつなぐ?

Aは、Bは3つの要素

Bの要素は、図6(A + 1の長さ)から開始するように、私は合計で、AとBのすべての要素を追加することが可能であるを有する 5つの要素を有します8要素。私はこれを何か精巧なループではなく、組み込みの方法で行うことを望んでいますか?

また、パフォーマンスの賢明さ、この種のアイデアはどれくらい悪いですか(それがまったく悪い場合)?私はList.addAll(インデックス、コレクション)メソッドは、あなたが必要とする何をすべきと考えている

おかげ

答えて

7

あなたが言及したサイズでは、これは決してあなたのためのパフォーマンスのちらちらを示すべきではありません。 2桁も大きくても問題にならないはずです。

EDIT:ArrayList.addAll()の実装を二重チェックしました。できるだけ効率的です。新しい要素を収容するために1つの拡張が行われ、要素を移動するためにSystem.arrayCopyが使用されます。

1

List.addAll()

性能もワイズ、これはあなたがはるかに大きい持っている場合は、不要な割り当てを避けるために、まず正しいサイズの新しいArrayListを作成することができます5 + 3 で多くの影響を与えることはほとんどありません。あるいは、パフォーマンス特性が異なるLinkedListを使用してください。

編集:他人に説明されているように、ArrayList.addAll()はあなたと同じくらい良好です。

+1

この操作にLinkedListを使用することを強くお勧めします。新しいノードを別々に割り当て、リストの末尾に追加します。ほとんどのサイズでは、この特定の操作ではArrayListほど効率的ではありません。もちろん、病理学的なケースがありますが、私はArrayListに固執します。 – rfeak

+0

それは本当です。私は一般的なリンクリストの実装について考えていましたが、あなたが言うようにLinkedListはそれほど機能しません。 – OrangeDog

関連する問題