Kev*_*ing 1 string stringbuilder scala string-concatenation immutability
如果你在单个语句中执行某些操作,例如"abc"+ stringval +"abc",那么是一个不可变的字符串副本,或者两个(注意到abc和123在编译时是常量)
奖金回合:会使用像下面这样的StringBuilder或多或少的开销?
def surround(s:String, ss:String):String = {
val surrounded = new StringBuilder(s.length() + 2*ss.length(), s)
surrounded.insert(0,ss)
surrounded.append(ss)
surrounded.mkString
}
Run Code Online (Sandbox Code Playgroud)
还是有一种我不知道的更惯用的方式?
它比串联具有更少的开销.但是示例中的插入效率不高.以下是一个更清洁,只使用追加效率.
def surround(s:String, ss:String) =
new StringBuilder(s.length() + 2*ss.length(), ss).append(s).append(ss).mkString
Run Code Online (Sandbox Code Playgroud)