Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次(转)

本文分析了五种Java字符串拼接方法的性能,包括加号“+”、Stringcontact()、StringUtils.join()、StringBufferappend()和StringBuilderappend()。通过实验数据,详细对比了这些方法在处理小到大量数据时的效率,为程序开发提供了优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次(转)

字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现。

1. 加号 “+”

2. String contact() 方法

3. StringUtils.join() 方法

4. StringBuffer append() 方法

5. StringBuilder append() 方法

> 经过简单的程序测试,从执行100次到90万次的时间开销如下表:

 

 由此可以看出:

1. 方法1 加号 “+” 拼接 和 方法2 String contact() 方法 适用于小数据量的操作,代码简洁方便,加号“+” 更符合我们的编码和阅读习惯;

2. 方法3 StringUtils.join() 方法 适用于将ArrayList转换成字符串,就算90万条数据也只需68ms,可以省掉循环读取ArrayList的代码;

3. 方法4 StringBuffer append() 方法 和 方法5 StringBuilder append() 方法 其实他们的本质是一样的,都是继承自AbstractStringBuilder,效率最高,大批量的数据处理最好选择这两种方法。

4. 方法1 加号 “+” 拼接 和 方法2 String contact() 方法 的时间和空间成本都很高(分析在本文末尾),不能用来做批量数据的处理。

 源代码请参考原文:https://www.cnblogs.com/twzheng/p/5923642.html

posted @ 2019-03-15 09:37 花儿为何那样红 阅读( ...) 评论( ...) 编辑 收藏
帮我找出这段代码的问题 private static String phoneCaseInventoryManage(float demand, float[] inventory, float[] price) { List<Comparable[]> unitPrice = new ArrayList<>(); for (int i = 0; i < inventory.length; i++){ unitPrice.add(new Comparable[]{i, price[i] / inventory[i]}); } unitPrice.sort((price1, price2) -> price2[1].compareTo(price1[1])); float totalPrice = 0; for(int i = 0; i < unitPrice.size(); i++){ if(inventory[i] >= demand){ totalPrice += demand * (float)unitPrice.get(i)[1]; break; }else{ demand -= inventory[i]; totalPrice += price[i]; } } return "" + totalPrice; } 题目为:库存管理对于手机壳销售是否达成盈利最大化至关重要。 仓库中有一批不同型号的手机壳,每种型号手机壳的库存数量存在数组inventory中、总售价存在数组price中。每种型号手机壳的 销售收益 = 销售数量 * (price[i] / inventory[i]) 。 现给定市场上手机壳的最大需求量demand,请制定最佳销售策略以获得最大的总销售收益,并返回该值。 解答要求 时间限制: C/C++ 1000ms, 其他语言:2000ms 内存限制: C/C++ 256MB, 其他语言:512MB 输入 首行两个正整数 M 和 N,M 表示手机壳种类的个数,取值范围:[1, 1000]; N 表示市场最大需求量,取值范围:[1, 500] (单位为千部)。 第2行 M 个数字,表示每种型号手机壳的数量(单位为千部),每个数字的取值范围:(0.0,1000.0] 第3行 M 个数字,表示每种手机壳的总售价(单位为万元),顺序与第2行一一对应,每个数字的取值范围:(0.0,10000.0]。 输出 浮点数形式的最大收益值(万元为单位)
最新发布
06-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值