在Java中迭代StringBuilder的标准方法?
我很惊讶,我找不到一个现有的问题来回答这个问题 Java中迭代StringBuilder中所有字符的标准方法是什么 显而易见的方法是将其转换为字符串,然后使用tocharray()。问题是,我正在处理成千上万个唯一的字符串,我用它们做了很多附加,我想我不得不对它们进行实习,这会导致内存和性能问题在Java中迭代StringBuilder的标准方法?,java,loops,iterator,stringbuilder,Java,Loops,Iterator,Stringbuilder,我很惊讶,我找不到一个现有的问题来回答这个问题 Java中迭代StringBuilder中所有字符的标准方法是什么 显而易见的方法是将其转换为字符串,然后使用tocharray()。问题是,我正在处理成千上万个唯一的字符串,我用它们做了很多附加,我想我不得不对它们进行实习,这会导致内存和性能问题 编辑:澄清一下,我不是手动插入字符串,但我的理解是它们是自动插入的,如果我为StringBuilder调用toString,它们将被插入。也许我误解了。首先,如果你实习了大量的字符串,你就做错了 一般来
编辑:澄清一下,我不是手动插入字符串,但我的理解是它们是自动插入的,如果我为StringBuilder调用
toString
,它们将被插入。也许我误解了。首先,如果你实习了大量的字符串,你就做错了
一般来说,
StringBuilder
实现CharSequence
,就像String
一样。对循环使用基于的普通计数器,并且charAt()
StringBuilder有一个charAt()
方法。您可以使用该方法对每个字符进行迭代。在性能方面会是什么样子?charAt()是否提供O(1)访问?您正在从数组中读取,所以是的。如果您非常关心性能,那么它将是O(1),也许您可以稍微向后折叠,使用byte[]或char[]来代替,这取决于您如何获得这些“字符串”。首先,您是如何填充StringBuilder的?恐怕唯一内部化的字符串是代码中的字符串文本和调用intern()的字符串,可能还有一些基本常量,如“”,否则它们根本不会内部化。1。我如何避免实习字符串?我几乎在做任何事情时都使用StringBuilder,尽可能避免使用字符串。你能详述“非常非常错误的事情”以及如何避免它吗?2.charAt()是否提供O(1)访问权限?@jmite1。在使用构建器时,您不会实习任何东西。事实上,除非显式地对构建字符串调用intern()
,否则不会从构建字符串中插入任何内容。但是您甚至还没有创建字符串对象,您可以直接从可变生成器完成所有这些。2.是charAt()。我知道StringBuilder没有被拘留,这就是为什么我要使用它们。我担心如果我使用toString
,他们会被拘留。我将使用charAt,看看它是如何工作的。谢谢