StringBuffer是Kotlin处理多字符串连接的方式吗?

StringBuffer是Kotlin处理多字符串连接的方式吗?,string,kotlin,stringbuffer,String,Kotlin,Stringbuffer,kotlin处理多字符串连接的方法是什么 -编辑- 将导致我产生这种怀疑的代码放入 fun getNCharsFromRange(n: Int, range: CharRange): String { val chars = range.toList() val buffer = StringBuffer() while (buffer.length < n) { val randomInt = Random.Default.nextInt(0, c

kotlin处理多字符串连接的方法是什么

-编辑- 将导致我产生这种怀疑的代码放入

fun getNCharsFromRange(n: Int, range: CharRange): String {
    val chars = range.toList()
    val buffer = StringBuffer()
    while (buffer.length < n) {
        val randomInt = Random.Default.nextInt(0, chars.lastIndex)
        val newchar = chars[randomInt]
        val lastChar = buffer.lastOrNull() ?: ""
        if (newchar != lastChar) {
            buffer.append(newchar)
        }
    }
    return buffer.toString()
}
是在Kotlin中构造字符串的标准方法,就像在Java中一样

当然,除非它可以在一行中完成,否则a通常比Java风格的连接更好

不过,Kotlin有一个改进:您可以使用隐式处理,这可以使代码更加简洁。例如,您的代码可以编写为:

fun getNCharsFromRange(n: Int, range: CharRange): String {
    val chars = range.toList()
    return buildString {
        while (length < n) {
            val randomInt = Random.Default.nextInt(0, chars.lastIndex)
            val newChar = chars[randomInt]
            val lastChar = lastOrNull() ?: ""
            if (newChar != lastChar)
                append(newChar)
        }
    }
}
这会洗牌整个列表,即使只需要几个字符。因此,只洗牌所需的部分会更有效。但是没有库函数,因此您必须手动编写。我将把它作为练习

A是在Kotlin中构造字符串的标准方法,就像在Java中一样

当然,除非它可以在一行中完成,否则a通常比Java风格的连接更好

不过,Kotlin有一个改进:您可以使用隐式处理,这可以使代码更加简洁。例如,您的代码可以编写为:

fun getNCharsFromRange(n: Int, range: CharRange): String {
    val chars = range.toList()
    return buildString {
        while (length < n) {
            val randomInt = Random.Default.nextInt(0, chars.lastIndex)
            val newChar = chars[randomInt]
            val lastChar = lastOrNull() ?: ""
            if (newChar != lastChar)
                append(newChar)
        }
    }
}

这会洗牌整个列表,即使只需要几个字符。因此,只洗牌所需的部分会更有效。但是没有库函数,因此您必须手动编写。我将把它作为练习

只需使用,编译器将在hood@SinneroftheSystem我不确定模板是否适合我的情况,所以我只是添加了一段代码,这段代码导致我怀疑在这种情况下使用StringBuilder或StringBuffer是正确的,无论使用kotlin还是JavaUse,编译器都将在hood@SinneroftheSystem我不确定模板是否适合我的情况,所以我只是添加了一段代码,这段代码导致我怀疑在这种情况下使用StringBuilder或StringBuffer是正确的,无论使用kotlin还是Javayes,我都应该避免这个方法中只有连续字符是相同的。它是在一个密码生成器练习中,用最小数量的数字限制,num的鞋帮,num的下降和总长度。这个方法被用来分别生成上半音、下半音和数字,然后我将这三个字符一起洗牌,如果有连续的相等字符,则重新洗牌。如果我不将生成限制在部件上,我将无法保证在最坏的情况下重新洗牌,但我真正的疑问是如何以最好的kotlin方式连接字符串。我仍然主要依靠我的java知识来编写kotlinyes,我应该避免这个方法中只有连续字符是相同的。它是在一个密码生成器练习中,用最小数量的数字限制,num的鞋帮,num的下降和总长度。这个方法被用来分别生成上半音、下半音和数字,然后我将这三个字符一起洗牌,如果有连续的相等字符,则重新洗牌。如果我不将生成限制在部件上,我将无法保证在最坏的情况下重新洗牌,但我真正的疑问是如何以最好的kotlin方式连接字符串。我仍然主要依靠我的java知识来编写kotlin