両端で挿入を処理できる必要があるデータ構造を必要とするパブリック メソッドを実装しています。O(N)時間ArrayList.add(0,key)
かかるので、代わりに a を使用することにしました -とメソッドは両方ともO(1)時間かかるはずです。LinkedList
add
addFirst
ただし、既存の API を使用するには、私のメソッドはArrayList
. だから私は2つのアプローチがあります:
(1) useを使用して、 N/2が前に追加され、N/2が最後に追加されるN要素LinkedList
のすべての追加を行います。次に、コンストラクター
を呼び出して、これを次のように変換します。LinkedList
ArrayList
ArrayList
return new ArrayList<key>(myLinkedList);
(2) and を使用してN/2要素を後ろに追加しArrayList
、 callを使用してN/2要素を前に追加します。これを返します。ArrayList.add(key)
ArrayList.add(0,key)
ArrayList
時間の複雑さの点でどのオプションがより最適化されているかについて、誰かコメントできますか? Java がコンストラクターをどのように実装しているかはわかりませんArrayList
。これは、どのオプションが優れているかを決定する重要な要素です。
ありがとう。