2011-07-29 8 views
0

LinkedListのコピーに関する質問があります。私はデータを取り込んでそれをLinkedListに保存しているプロジェクトに取り組んでいます。これはネットワークポートを介したライブフィードを介して行われ、収集したデータを処理するためにこのリストから別のリストにデータをコピーできるようにしたいと考えています。常にデータが収集されているので、最初のリストの先頭が2番目のLinkedListに関連付けられているように、Cで「ポインタ」を変更するような方法があります。LinkedListを使用したJavaコピー

答えて

1

2つのキューが必要なように聞こえます。収集のための1つのキューと処理のための1つのキューがあります。ある時点で、それらを前後に入れ替える必要があります。あなたがスイッチのために簡単にロックする限り、すべてが大丈夫です。リンクされたリストのポインタを使いこなす必要はなく、コンテンツのコピーを避けることができます。

言われていることは、多分、あなたは、キューを作動させるエグゼキュータの並行性パッケージを調べることを検討すべきです。あなたの具体的な仕事について多くのことを知らなくても、あなたがやっていることとのより良い一致があり、細部を手作業でコード化する必要を避けることができるようです。

編集:これは私が話しているパッケージです。 http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/package-summary.html

+0

私はそれについて考えていましたが、これまでのところこれが問題の最良の答えかもしれません。あなたがリンクしたパッケージを調べます。ありがとう! – intelman

1
second.addAll(first); 
first.clear(); 
+0

addAll()の時間の複雑さは知っていますか?私はデータを取り込んでいるので、addAll()はx時間がかかり、x時間の間に最初のリンクリストにy個のデータが追加され、clear()を使うとy個のデータが失われることになります。 – intelman

+0

addAllは、追加するコレクションのtoArrayを呼び出すのと同じように見え、配列を繰り返して、要素を1つずつ追加します。 – z5h

+0

残念ながら 'LinkedList'の基礎となるノード構造を検索する方法がないので、残念ながら' O(n) 'になります。しかし、実際にパフォーマンスが問題になる場合は、連結をサポートする独自のLinkedList実装を作成することをお勧めします。 – tskuzzy

0

何のおよそ1:

linkedlist.push(newHeadValue);
または

linkedlist.addFirst(newHeadValue);
または

linkedlist.add(0,newHeadValue);

または明示的にヘッドがデータを持たないステップをしたいですか?

+0

頭がヌルのステップは必要ありません。私はちょうど別のリンクされたリストにデータをコピーする必要があります。私は主に同意を心配しました。 – intelman

+0

Appoligies。私は尾を共有する2つのリストで終わりたいと思っていたという点でその質問を理解していませんでした。 – z5h

関連する問題