Копирование Java с использованием встроенного LinkedList - PullRequest
0 голосов
/ 29 июля 2011

У меня есть вопрос о копировании LinkedList.Я работаю над проектом, который принимает данные и хранит их в LinkedList.Это делается через прямую трансляцию через сетевой порт, и я хочу иметь возможность копировать данные из этого списка в другой для обработки собранных данных.Поскольку всегда собираются данные, есть ли способ, как в C, изменить «указатели», чтобы заголовок первого списка теперь ассоциировался со вторым LinkedList, поскольку первый был бы пуст для новых данных?

Ответы [ 3 ]

1 голос
/ 29 июля 2011

Мне кажется, что вам нужно 2 очереди.Есть 1 очередь для сбора и 1 для обработки.В какой-то момент вам нужно поменять их местами.Пока вы на короткое время заблокируете переключатель, все должно быть в порядке.Нет необходимости возиться с указателями в связанном списке, и вы можете избежать копирования содержимого вокруг.

При этом, возможно, вам следует рассмотреть возможность просмотра пакетов параллелизма для исполнителей, которые работают вне очередей.Не зная ничего о вашей конкретной задаче, кажется, что они могут лучше соответствовать тому, что вы делаете, и позволяют избежать необходимости вручную кодировать детали.

РЕДАКТИРОВАТЬ: Это пакет, который яговоря о.http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/package-summary.html

1 голос
/ 29 июля 2011
second.addAll(first);
first.clear();
0 голосов
/ 29 июля 2011

А как насчет одного из:

linkedlist.push(newHeadValue);
или

linkedlist.addFirst(newHeadValue);
или

linkedlist.add(0,newHeadValue);

или вы явно хотите шаг, когда у головы нет данных?

...