假设我有一个字符串链表。打印此链表的最有效方法是什么?
答案 0 :(得分:1)
与任何列表或数组相同:循环遍历元素并依次打印每个元素。为O(n)。
答案 1 :(得分:1)
@Thilo是对的。显而易见的解决方案是正确的...只要您不以粗糙方式格式化字符串(例如,通过附加到一个大字符串),或者隐式刷新输出太多。
但另一件需要说的是:
不要过分关注性能/效率。
大多数情况下,这样的性能/效率并不重要。在这种情况下,除非你做了严重的错误,否则格式化列表所花费的时间相对于输出字符所花费的时间可能很小,而TINY则与运行整个程序所花费的时间相比较。
你很有可能花费更多的时间来思考这个问题,而不是将其保存......等待最终用户等待计算机给他们答案。
性能可以很重要。但这不太重要。当您有证据需要付出努力时,最好只花费精力来加快速度。让程序先运行,对其进行分析,然后决定优化它是否有任何价值。
答案 2 :(得分:0)
您可以先将LinkedList
转换为数组(使用.toArray(new String[0])
),然后使用Arrays.deepToString()打印
Arrays.deepToString(convertedArray);
答案 3 :(得分: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
,则会立即将每个操作发送到输出,这可能很慢。您是否看到在某些应用服务器中禁用或更改日志级别以获得更好的性能?