【问题标题】:Is this a good way of clearing a StringBuilder? [duplicate]这是清除 StringBuilder 的好方法吗? [复制]
【发布时间】:2015-07-23 06:03:18
【问题描述】:

我想问一下这是否是清除/清空 StringBuilder 的好方法?它被包装在一个方法中并且被多次调用,这个线程安全吗?这不会消耗大量内存吗?如果我在方法之外而是在类中创建 StringBuilder 会更好吗?

private void callMe(){
    StringBuilder builder = new StringBuilder();
    builder.delete(0, builder.length());
}

builder.append("some ID");

if (builder.toString().contains("some other ID"))
    Show("Information")
else
    Show("Invalid ID")

【问题讨论】:

  • 为什么在你创建一个新对象之后,你builder.delete(0, builder.length());
  • 为什么要删除刚刚创建的条目?
  • 这只是整个代码的一部分,它用于在将字符串与来自 Web 服务的 ID 附加后与它进行比较。我清除了它,因为它被调用了几次。
  • 整个代码的这一部分不与代码的其他部分交互。

标签: java android


【解决方案1】:

在我发布我的答案之前,我假设您在循环中使用 StringBuilder,并且每隔几次迭代您可能想要清空它并从一个空的 StringBuilder 开始。在这种情况下,我可以想到两种方法:

  • 在您正在使用的字符串生成器上调用setLength(0)。比起delete,我更喜欢这个,因为我觉得它更整洁。
  • 或者分配一个新的而不是清除缓冲区。这可能不是一个理想的选择,但仍然是一个选择。

【讨论】:

    【解决方案2】:

    调用会更有效率

    sb.setLength(0);

    因为这只是一个方法调用,而不是两个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 2011-07-08
      • 2010-12-15
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 2017-05-26
      相关资源
      最近更新 更多