jjzjj

stringbuilder

全部标签

java - 如何在 Java 中使用 String 或 StringBuilder 倒序搜索?

你能告诉我如何在Java中反向搜索(向后搜索)吗?我需要做同样的事情来在HTML文件中搜索文本。 最佳答案 [...]howtosearchinreveresorder(backwardsearch)injava?我假设您的意思是从末尾开始搜索字符串。对于此任务,您可以使用String.lastIndexOf(str).这将找到子字符串str的last索引。如果您想从该点继续搜索,可以添加第二个fromIndex参数。StringBuilder存在完全相同的方法 关于java-如何在Ja

java - 在 Java 中处理大字符串时出现 StringBuilder 内存不足错误

我从Stringtest+=str;开始,其中test以指数级增长,包含成千上万个字符。运行需要45分钟,可能是因为创建了大字符串并删除了垃圾。然后我像这样错开输入,将其带到30秒。这似乎是一种廉价的方法,但效果很好:if(secondDump.length()>50){intermedDump=intermedDump+secondDump;secondDump="";}if(intermedDump.length()>100){thirdDump=thirdDump+intermedDump;intermedDump="";}if(thirdDump.length()>500){f

java - 在 GWT 的客户端生成随机代码

我创建了一个javagwt应用程序,我想在其中从客户端验证用户的电子邮件地址,有什么方法可以在客户端生成随机的5字符代码吗?我们将不胜感激任何形式的帮助。 最佳答案 是这样的吗?StringBuildersb=newStringBuilder();Randomrandom=newRandom();for(inti=0;i 关于java-在GWT的客户端生成随机代码,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

Java String.replace() 或 StringBuilder.replace()

在我使用5-10个替换的情况下是否有必要使用stringbuilder。StringsomeData="......";someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.replaceAll("(?s).*?","");someData=someData.rep

java - 对于最多 9-10 步的字符串连接,是否有比 StringBuilder 更快的方法?

我有这段代码来连接一些数组元素:StringBuildersb=newStringBuilder();privateRatedMessagejoinMessage(intstep,booleanisresult){sb.delete(0,sb.length());RatedMessagerm;for(inti=0;i重要的是数组最多包含10个项目,所以它不是很多。我的跟踪输出告诉我这个方法被调用了18864次,16%的运行时间花在了这个方法上。我可以优化更多吗? 最佳答案 首先,我不会重用StringBuilder并始终创建新实例。

java - 为什么 StringBuffer 有 toStringCache 而 StringBuilder 没有?

在JDK8中,StringBuffer类有一个toStringCache,而StringBuilder没有。/***AcacheofthelastvaluereturnedbytoString.Cleared*whenevertheStringBufferismodified.*/privatetransientchar[]toStringCache;但是为什么呢?我能想到的一个可能原因是StringBuffer已经同步,因此可以更轻松地实现缓存。或者也许历史上StringBuffer是这样实现的,所以旧代码严重依赖这个特性?鉴于现代JVM具有逃逸分析和偏向锁定,这些差异是否相关?

java - 在没有 toString() 的情况下将 StringBuilder 写入 Writer

在Servlet中,我在StringBuilder中构建了大量HTML内容,最后需要将其写入响应的PrintWriter。为了使用PrintWriter,它必须首先调用StringBuilder的toString()方法以获取字符串形式的内容。但这不必要地重复了内容。有没有什么方法可以直接从StringBuilder写入,因为它已经保存了内容?PrintWriter可以接受CharSequence,但文档说明它调用CharSequence的toString(),所以它并没有真正帮助。我能看到的唯一清晰的方法是使用StringBuilder的charAt(i)方法一次获取和写入一个字符,

java - 在 Java 1.7+ 上,我们是否仍需要使用 StringBuffer.append 转换 "this string"+ "should"+ "be"+ "joined"以获得最佳实践?

在Java1.7+上,我们是否仍需要使用StringBuffer.append转换“thisstring”+“should”+“be”+“joined”以获得最佳实践? 最佳答案 1)像"thisstring"+"should"+"be"+"joined"这样的常量表达式(JLS15.28)不需要StringBuilder因为它是在编译时计算成一个字符串“这个字符串应该加入”2)对于非常量表达式,编译器将自动应用StringBuilder。也就是说,"string"+var等同于newStringBuilder().append("

java - 对于长度变化很大的输入,最佳 StringBuffer 初始容量是多少?

大家下午好,我正在使用java.lang.StringBuilder存储一些字符。我不知道我要提前存储多少个字符,除了:60%的情况下,它只有(恰好)7个字符39%的时间是(大约)3500个字符1%的时间,大约是20k个字符我们如何计算应该使用的最佳初始缓冲区长度?目前我正在使用newjava.lang.StringBuilder(4000)但那只是因为我以前懒得想。 最佳答案 这里有两个因素:时间和内存消耗。该时间主要受java.lang.AbstractStringBuilder.expandCapacity()调用次数的影响。

java - 通过 Java 中的标准输出更快的输出?

在在线评委编程竞赛问题中,我需要通过标准输出在1秒内输出多达50,000行(除了读取多达200,000对整数,我使用缓冲区)。我的逻辑似乎是正确的,但我的提交总是因为超过1秒的运行时间而被拒绝。我精简了我的代码逻辑,只输出一个常量字符串,但它仍然超过了时间限制。是否有比对每一行输出使用System.out.println(Strings)更快的输出方式? 最佳答案 我会像这样使用单个System.out.print调用(或至少通过基准测试发现有意义的调用):Stringstr="line1\nline2\nline3\n...";S