zoukankan      html  css  js  c++  java
  • 关于使用map存放数据乱序”问题“

    今天做项目中遇到了一个比较低级的错误,如果没注意将会变的更麻烦。。。

    其实吧,也不难,要求就是将list中的值转为map后,再顺序输出map中的值,list的顺序怎样,加入到map的顺序也应怎样,不能乱序!

    一开始做之前没注意那么多,习惯性使用

    1 Map<String,Object> jsonMap = new HashMap<>();

    这样做之后的结果可想而知,虽然说查询数据快,但数据肯定是乱序的,毕竟它是根据hashcode码来排序,

    之后使用TreeMap,但依然没有得到想要的结果,而HashTable就更不用说了。

    可能是因为当时事多比较急吧,没考虑那么多,最后查看了下api之后,才发现可以使用LinkedHashMap才能达到自己想要的效果;

    最后来讲下HashMap、TreeMap、LinkedHashMap和HashTable四者的区别吧:

    1、HashMap中的key的值根据hashcode来排序,无法得到实际中想要的顺序,常用来做统计;

    2、LinkedHashMap,它内部有一个链表,可以保持key插入的顺序。迭代的时候,也是按照插入的顺序进行迭代,而且迭代的速度比HashMap更快;

    3、TreeMap的顺序是key的自然顺序(如整数从小到大),也可以指定比较函数,但不能保持插入时的顺序

    4、HashTable与HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步、即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。

  • 相关阅读:
    类的继承和方法重写
    引用地址的变化
    Java中代码块执行顺序
    冒泡排序实现原理
    JSP九大内置对象
    SSH框架运行流程
    springboot + maven 整合SSM
    Maven创建项目,Index.jsp报错
    一些js在线引用文档
    excel出现虚线怎么去掉?
  • 原文地址:https://www.cnblogs.com/mYunYu/p/9983651.html
Copyright © 2011-2022 走看看