java - 字符串变量连接

标签 java string string-concatenation

我有几行代码如下。我的问题是更喜欢哪一个?

public static String convertMapToString ( Map < String, String > map )
{
    StringBuilder str = new StringBuilder ( 200 ) ;
    for ( Entry < String, String > entry : map.entrySet ( ) )
    {
        str.append ( entry.getKey() + " = " + entry.getValue() ) ; 
    }
    return str.toString()  ;
}

或者我是否应该继续执行以下操作,因为我怀疑上面的 appned 语句可能会由于 + 操作而创建另外两个字符串 在每次迭代中。

public static String convertMapToString ( Map < String, String > map )
{
    StringBuilder str = new StringBuilder ( 200 ) ;
    for ( Entry < String, String > entry : map.entrySet ( ) )
    {
        str.append (entry.getKey());
        str.append (" = ");
        str.append (entry.getValue()) ; 
    }
    return str.toString()  ;
}

最佳答案

按照传统观点,为了获得最佳的 Strings 连接,您应该更喜欢 StringBuilder.append 方法,因此这将是您示例中的选项 2。

注意根据language spec即使您使用 "+" 连接,实现可能选择将它们优化为 StringBuilder.append ,但不能保证,所以如果最佳执行是您的首要任务,我建议始终选择选项 2。

关于java - 字符串变量连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36300933/

相关文章:

java - RoboSpice 使用 OrmLite 持久化 JSON 数组

c# - 如何创建更加用户友好的 string.format 语法?

string - 在 x86 程序集中附加两个字符串

java - 在两点之间绘制曲线

java - 我是否应该设计一个包含领域事件的会计系统?

java - 为什么在java中会出现这种情况?

C# 将小数转换为指定格式的字符串

C# Regex 使用 newLine 在两个字符串之间查找字符串

Java连接以构建字符串或格式

c# - String Concatenation 在 C# 中不安全,需要使用 StringBuilder?