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