【问题标题】:Is there an equivalent to StringWriter but with StringBuilder internally in Java?是否有等效于 StringWriter 但在 Java 内部使用 StringBuilder 的方法?
【发布时间】:2014-09-17 06:27:55
【问题描述】:

我注意到 StringWriter 在内部使用了一个 StringBuffer。但是,如果您不需要同步开销,是否有等效于 StringWriter 的内部使用 StringBuilder ?

【问题讨论】:

  • 您到底想实现什么?..我认为无论您使用 stringbuffer 还是 stringbuilder,性能差异都非常小。 (同样,这取决于您的应用程序)
  • 无耻插件:github.com/nablex/utils-io 更具体地说:IOUtils.newCharBuffer();
  • @user3505725 如果你真的关心性能,你也不会使用。 ;) 也许是一个重新循环的缓冲区,如果你只需要 ASCII 等,也许是一个基于字节的缓冲区。
  • 这将被应用程序中的自定义记录器使用,并且会写入很多东西,所以我想性能提升会是可见的

标签: java performance io


【解决方案1】:

如果你碰巧使用了Apache Commons IO,那么你可以重复使用StringBuilderWriter,描述如下:

输出到 StringBuilder 的编写器实现。

注意:作为 java.io.StringWriter 的替代方案,此实现提供了一个非同步(即用于单线程)实现以获得更好的性能。为了安全使用多个线程,应使用 java.io.StringWriter。

它的实现也像预期的那样简单,因此您可以从中进行模式化并自己实现它,而无需添加新的依赖项。

【讨论】:

    【解决方案2】:

    不,在当前的标准 java API 中没有使用 StringBuilder 的等效项(至少 7 个,我没有调查 8 个)。

    如果你的问题背后的理由是表演,我认为你不必担心。但是如果这方面很关键,您可以自己实现一个StringWriter 类,但使用StringBuilder 来检查差异是否显着。如果是,请保留自己的,否则,没有问题。

    【讨论】:

    • +1 可以复制已有的类,5分钟左右改一下。
    • 我会试试这个。感谢您的提示
    • @sa_vedem 请告诉我们结果,这很有趣!
    猜你喜欢
    • 2011-03-20
    • 2012-06-06
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2014-04-06
    • 2023-03-21
    相关资源
    最近更新 更多