java拼接字符串 用哪个_java中拼接字符串的5种方法效率对比

public class Test {

List list = new ArrayList<>();

@Before

public void init(){

IntStream.range(0,100000).forEach((index) -> {

list.add("str" + index);

});

}

@org.junit.Test

public void test1() {

String ss = "";

long startTime = System.currentTimeMillis();

for (String s : list) {

ss += s;

}

System.out.println(System.currentTimeMillis() - startTime);

}

@org.junit.Test

public void test2() {

String ss = "";

long startTime = System.currentTimeMillis();

for (String s : list) {

ss=ss.concat(s);

}

System.out.println(System.currentTimeMillis() - startTime);

}

@org.junit.Test

public void test3() {

StringBuilder ss = new StringBuilder();

long startTime = System.currentTimeMillis();

for (String s : list) {

ss.append(s);

}

System.out.println(System.currentTimeMillis() - startTime);

}

@org.junit.Test

public void test4() {

long startTime = System.currentTimeMillis();

StringUtils.join(list);

System.out.println(System.currentTimeMillis() - startTime);

}

@org.junit.Test

public void test5() {

StringBuffer ss = new StringBuffer();

long startTime = System.currentTimeMillis();

for (String s : list) {

ss.append(s);

}

System.out.println(System.currentTimeMillis() - startTime);

}

}

@H_502_17@

第一种:33809

第二种:8851

第三种:6

第四种:12

第五种:7

性能:StringBuilder>StringBuffer>StringUtils.join>concat>+

然后从源码层面分析下

StringBuilder:

15150715241.jpg?20180294351

每次字符串拼接都只是扩展内部char数组,只生产一个最终的string,所以这种效率最高

StringBuffer:

15150715242.png?20180294417

与StringBuilder相比只是多加了个synchronized,所以在单线程的情况下相差不大

StringUtils.join:

15150715253.png?20180294922

15150715254.png?20180295019

可以看到其内部还是用StringBuilder实现,但是每次循环都多了个分隔符的判断所以慢了一点,但是也不多,时间上来讲是一个数量级的

concat:

15150715265.png?20180295037

可以看出每次连接都会生成一个string,所以效率很低

+:

因为是重载的运算符,找不到源码,但是从结果来看效率最低

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值