2013-03-28 2 views
0

Допустим, у меня есть связанный список строк. Каков наиболее эффективный способ печати этого связанного списка?Каков наиболее эффективный способ печати связанного списка?

+1

Существует только один способ обмануть этого кота, и это ваша самая простая линейная прогулка. – dasblinkenlight

ответ

1

То же, что и с любым списком или массивом: Прокрутите элементы и распечатайте их поочередно. На).

0

Вы можете сначала преобразовать LinkedList в массив (используя .toArray(new String[0])), а затем распечатать его с помощью Arrays.deepToString()

Arrays.deepToString(convertedArray); 
+0

Почему это было бы более эффективно, чем другие методы? И зачем вам нужно «deepToString» с не-глубоким объектом, например String? – Thilo

0

Коллекции Java реализовать оптимизированные итераторы, специфичные для структуры данных. В частности, к LinkedList, итератор сохраняет указатель на последний возвращенный элемент, чтобы разрешить постоянное время next() и previous() операций.

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

PrintWriter out = new PrintWriter(System.out, false); // autoFlush false 
// for-each or iterator 
//  out.print(obj); 
out.flush(); // flush to the output 

Если вы используете только System.out, каждая операция отправляется сразу на выход, который может быть медленным. Вы видели, что отключить или изменить уровень журнала на некоторых серверах приложений для повышения производительности?

1

@Thilo является правильным. Очевидное решение является правильным ... при условии, что вы не форматируете строку в pessimal (например, добавляя к одной большой строке), или неявно слишком сильно выставляете вывод.


Но другое дело, что нужно сказать, это:

Не обольщайтесь производительность/эффективность.

В большинстве случаев эффективность/эффективность чего-то подобного не имеет значения. И в этом случае, если вы не сделаете что-то серьезно неправильное, время, затрачиваемое на форматирование списка, вероятно, будет малым относительно времени, затрачиваемого на вывод символов, и TINY по сравнению с временем, затраченным на выполнение всей программы.

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

Эксплуатационные характеристики can быть важным. Но вряд ли это будет важно здесь. Лучше всего тратить силы на то, чтобы сделать вещи быстрее, когда у вас есть доказательства, что усилия необходимы. Сначала запустите программу, профилируйте ее, и только тогда решите, есть ли какое-либо значение для ее оптимизации.

Смежные вопросы