文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-27 06:09

关注
 @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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯