Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中迭代StringBuilder的标准方法?_Java_Loops_Iterator_Stringbuilder - Fatal编程技术网

在Java中迭代StringBuilder的标准方法?

在Java中迭代StringBuilder的标准方法?,java,loops,iterator,stringbuilder,Java,Loops,Iterator,Stringbuilder,我很惊讶,我找不到一个现有的问题来回答这个问题 Java中迭代StringBuilder中所有字符的标准方法是什么 显而易见的方法是将其转换为字符串,然后使用tocharray()。问题是,我正在处理成千上万个唯一的字符串,我用它们做了很多附加,我想我不得不对它们进行实习,这会导致内存和性能问题 编辑:澄清一下,我不是手动插入字符串,但我的理解是它们是自动插入的,如果我为StringBuilder调用toString,它们将被插入。也许我误解了。首先,如果你实习了大量的字符串,你就做错了 一般来

我很惊讶,我找不到一个现有的问题来回答这个问题

Java中迭代StringBuilder中所有字符的标准方法是什么

显而易见的方法是将其转换为字符串,然后使用tocharray()。问题是,我正在处理成千上万个唯一的字符串,我用它们做了很多附加,我想我不得不对它们进行实习,这会导致内存和性能问题


编辑:澄清一下,我不是手动插入字符串,但我的理解是它们是自动插入的,如果我为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,看看它是如何工作的。谢谢