广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java中数组转字符串的五种方式效率比较
  • 445
分享到

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

java数据结构 2023-09-27 06:09:49 445人浏览 薄情痞子
摘要

@Test public void listToString() { ArrayList longList = new ArrayList(); for (int i = 0; i < 10; i++)

 @Test    public void listToString() {        ArrayList longList = new ArrayList<>();        for (int i = 0; i < 10; i++) {            longList.add(String.valueOf(i));        }        //方法1        long startTime1 = System.currentTimeMillis();        String join1 = getString1(longList);        long endTime1 = System.currentTimeMillis();        log.info("方法一耗时:数据量:{},耗时{}", longList.size(), (endTime1 - startTime1));        long startTime2 = System.currentTimeMillis();        //方法2        String join2 = getString2(longList);        long endTime2 = System.currentTimeMillis();        log.info("方法二耗时:数据量:{},耗时{}", longList.size(), (endTime2 - startTime2));        long startTime3 = System.currentTimeMillis();        //方法3        String join3 = getString3(longList);        long endTime3 = System.currentTimeMillis();        log.info("方法三耗时:数据量:{},耗时{}", longList.size(), (endTime3 - startTime3));        long startTime4 = System.currentTimeMillis();        //方法4        String join4 = getString4(longList);        long endTime4 = System.currentTimeMillis();        log.info("方法四耗时:数据量:{},耗时{}", longList.size(), (endTime4 - startTime4));        long startTime5 = System.currentTimeMillis();        //方法5        String join5 = getString5(longList);        long endTime5 = System.currentTimeMillis();        log.info("方法四耗时:数据量:{},耗时{}", longList.size(), (endTime5 - startTime5));        log.info("原始数据:{}",longList);        log.info(join1);        log.info(join2);        log.info(join3);        log.info(join4);        log.info(join5);    }    //方法1    public static String getString1(List strList) {        if (CollectionUtils.isEmpty(strList)) {            return "";        }        return strList.stream().collect(Collectors.joining(","));    }    //方法2    @NotNull    private static String getString2(ArrayList longList) {        return StringUtils.collectionToCommaDelimitedString(longList);    }    //方法3    private static String getString3(ArrayList longList) {        return org.apache.commons.lang3.StringUtils.join(longList, ",");    }    //方法4    private static String getString4(ArrayList longList) {        StringBuilder sb = new StringBuilder();        for (int i = 0; i < longList.size(); i++) {            sb.append(i);            if (i < longList.size() - 1) {                sb.append(",");            }        }        return String.valueOf(sb);    }    //方法5    private static String getString5(ArrayList longList) {        return String.join(",", longList);    }

话不多说,上运行结果

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

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

耗时对比

数量级  百

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

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

数量级  千

 

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

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

数量级  万

 

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

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

数量级  十万

 

 

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

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

数量级  百万

  

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

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

数量级  千万

 

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

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

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

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

String.join(",", longList)

来源地址:https://blog.csdn.net/qq_35939148/article/details/131495097

--结束END--

本文标题: Java中数组转字符串的五种方式效率比较

本文链接: https://www.lsjlt.com/news/419265.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作