向HashMap、LinkedHashMap插入100000条数据效率比较


  • 在向HashMap插入数据时,发现Resultset返回的数据是正常顺序,但是插入HashMap后数据出现乱序,因此后续用LinkedHashMap解决数据乱序问题。
  • LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。也可以在构造时带参数,按照应用次数排序。
        List<Map<String, Object>> list = new ArrayList<>();     存放结果(表数据)
        String sql = "select * from " + table + " limit 100000";

        //获取开始时间
        long startTime = System.currentTimeMillis();

        ResultSet rs = stmt.executeQuery(sql);   //调用sql

            // 表数据遍历
            ResultSetMetaData md = rs.getMetaData();
            int columnCount = md.getColumnCount();
            while (rs.next()) {
                Map<String, Object> rowData = new LinkedHashMap<>();   // 1 LinkedHashMap
                //Map<String, Object> rowData = new HashMap<>();       // 2 HashMap
                for (int i = 1; i <= columnCount; i++) {
                    rowData.put(md.getColumnName(i), rs.getObject(i));
                }
                list.add(rowData);
            }

            //获取结束时间
            long endTime = System.currentTimeMillis();

            //输出程序运行时间
            double spendTime = (endTime - startTime)/1000.0;
            System.out.println("查询时间:" + spendTime + "s");

LinkedHashMap情况下,多次测试插入数据的运行时间

在这里插入图片描述

HashMap情况下,多次测试插入数据的运行时间

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HashMap是Java中常用的数据结构之一,它提供了快速的插入、删除和查找操作。然而,HashMap在遍历顺序上是不可预测的,这是因为它使用散列算法来存储键值对。而LinkedHashMapHashMap的子类,它在HashMap的基础上保留了插入顺序,即它会按照元素的插入顺序来进行遍历。 当需要按照插入顺序对键值对进行遍历或者需要保留插入顺序时,LinkedHashMap是更好的选择。对于较小的数据集来说,HashMapLinkedHashMap的性能差距并不明显,但是对于大规模数据集,LinkedHashMap的性能略低于HashMap。 讨论Json的效率时,主要是指从HashMapLinkedHashMap生成Json字符串以及解析Json字符串为HashMapLinkedHashMap的性能。Json序列化和反序列化是常见的数据交换格式,因此对性能有一定的要求。 在HashMapLinkedHashMap中,HashMap的序列化和反序列化的性能更高,因为LinkedHashMap需要额外的插入顺序维护。对于Json字符串的生成,两者性能相当,因为在序列化过程中,它们都需要依次遍历HashMapLinkedHashMap的键值对。 相反地,在将Json字符串解析为HashMapLinkedHashMap时,LinkedHashMap的性能略低于HashMap,因为LinkedHashMap需要按照插入顺序进行重建。 综上所述,HashMap在处理大数据集和需要高性能的场景中更具优势,而LinkedHashMap适用于需要保留插入顺序的场景。在Json序列化和反序列化方面,LinkedHashMap的性能稍逊于HashMap。但在实际应用中,如果性能差距不是关键因素,优先选择LinkedHashMap可以更好地满足需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值