当前位置:   article > 正文

Java中数组转字符串的五种方式效率比较_java数组转字符串

java数组转字符串

  1. @Test
  2. public void listToString() {
  3. ArrayList<String> longList = new ArrayList<>();
  4. for (int i = 0; i < 10; i++) {
  5. longList.add(String.valueOf(i));
  6. }
  7. //方法1
  8. long startTime1 = System.currentTimeMillis();
  9. String join1 = getString1(longList);
  10. long endTime1 = System.currentTimeMillis();
  11. log.info("方法一耗时:数据量:{},耗时{}", longList.size(), (endTime1 - startTime1));
  12. long startTime2 = System.currentTimeMillis();
  13. //方法2
  14. String join2 = getString2(longList);
  15. long endTime2 = System.currentTimeMillis();
  16. log.info("方法二耗时:数据量:{},耗时{}", longList.size(), (endTime2 - startTime2));
  17. long startTime3 = System.currentTimeMillis();
  18. //方法3
  19. String join3 = getString3(longList);
  20. long endTime3 = System.currentTimeMillis();
  21. log.info("方法三耗时:数据量:{},耗时{}", longList.size(), (endTime3 - startTime3));
  22. long startTime4 = System.currentTimeMillis();
  23. //方法4
  24. String join4 = getString4(longList);
  25. long endTime4 = System.currentTimeMillis();
  26. log.info("方法四耗时:数据量:{},耗时{}", longList.size(), (endTime4 - startTime4));
  27. long startTime5 = System.currentTimeMillis();
  28. //方法5
  29. String join5 = getString5(longList);
  30. long endTime5 = System.currentTimeMillis();
  31. log.info("方法四耗时:数据量:{},耗时{}", longList.size(), (endTime5 - startTime5));
  32. log.info("原始数据:{}",longList);
  33. log.info(join1);
  34. log.info(join2);
  35. log.info(join3);
  36. log.info(join4);
  37. log.info(join5);
  38. }
  39. //方法1
  40. public static String getString1(List<String> strList) {
  41. if (CollectionUtils.isEmpty(strList)) {
  42. return "";
  43. }
  44. return strList.stream().collect(Collectors.joining(","));
  45. }
  46. //方法2
  47. @NotNull
  48. private static String getString2(ArrayList<String> longList) {
  49. return StringUtils.collectionToCommaDelimitedString(longList);
  50. }
  51. //方法3
  52. private static String getString3(ArrayList<String> longList) {
  53. return org.apache.commons.lang3.StringUtils.join(longList, ",");
  54. }
  55. //方法4
  56. private static String getString4(ArrayList<String> longList) {
  57. StringBuilder sb = new StringBuilder();
  58. for (int i = 0; i < longList.size(); i++) {
  59. sb.append(i);
  60. if (i < longList.size() - 1) {
  61. sb.append(",");
  62. }
  63. }
  64. return String.valueOf(sb);
  65. }
  66. //方法5
  67. private static String getString5(ArrayList<String> longList) {
  68. return String.join(",", longList);
  69. }

话不多说,上运行结果

注意 方法一跟方法五,如果数组是其它类型的 还需要转成String类型才能使用,如下

 longList.stream().map(a -> String.valueOf(a)).collect(Collectors.toList());

耗时对比

数量级  百

结果:运行多次五种方式每次运行结果耗时相差不大

结论:运行多次效率比方法四=方法五>方法二>方法三>>方法一

数量级  千

 

结果:运行多次五种方式每次运行结果耗时相差不大

结论:运行多次效率比方法四>=方法五>方法二>方法三>>方法一

数量级  万

 

结果:运行多次五种方式每次运行结果耗时相差不大

结论:运行多次效率比方法四=方法五>方法二>方法三>>方法一

数量级  十万

 

 

结果:运行多次,其中方法五效率明显高于其它四种方法,方法二、方法三、方法四效率相差不大各有胜负,方法一效率最差远低于其它四种方法

结论:,方法五>方法二>=方法三>=方法四>>方法一

数量级  百万

  

结果:运行多次,其中方法五效率依然高于其它四种方法,方法二、方法三、方法四效率比较接近 方法三略占优,方法一效率最差 

结论:,方法五>=方法三>方法二>方法四>方法一

数量级  千万

 

结果:运行多次,其中方法五效率依然高于其它四种方法,除了方法一,其它四种方法 计算数据量高了10倍,但耗时普遍增加了10---30倍,

结论:,方法五>方法一>>方法四=方法三>方法二

其它说明:如果是实时交互业务,当前响应时间已经影响用户体验

最后总结:方法五对于千万级别计算 远高于其它四种方式

String.join(",", longList)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/730039
推荐阅读
相关标签
  

闽ICP备14008679号