最近工程里面报表需要合计 , 因为所有的项都是动态的,所以只能动态添加。

思路是使用Map,初始化所有Map,然后在Map中合计并且覆盖。

使用HashMap , 初始化后所有动态项的顺序都乱了。

Map<String , Double> totalMap = new  HashMap<String, Double>(); 
for (Map<String, Object> map : itemList) {
itemSql += "SUM("+map.get("ITEM_NO")+") AS "+map.get("ITEM_NO")+" ,";
totalMap.put(map.get("ITEM_NO").toString(), 0d);
}

TreeMap也无法满足我的需求,TreeMap属于自然排序。 动态项肯定是人工调整的,我只需要根据PUT先后顺序排序即可。

Google了下,发现HashMap子类LinkedHashMap可以实现迭代顺序(既插入顺序) 代码如下:

Map<String , Double> totalMap = new  LinkedHashMap<String, Double>();    //用于统计动态项
for (Map<String, Object> map : itemList) {
itemSql += "SUM("+map.get("ITEM_NO")+") AS "+map.get("ITEM_NO")+" ,";
totalMap.put(map.get("ITEM_NO").toString(), 0d);
}

LinkedHashMap 根据PUT顺序排序Map的更多相关文章

  1. java中的TreeMap如何顺序按照插入顺序排序

    java中的TreeMap如何顺序按照插入顺序排序 你可以使用LinkedHashMap  这个是可以记住插入顺序的. 用LinkedHashMap吧.它内部有一个链表,保持插入的顺序.迭代的时候,也 ...

  2. MapReduce:将下面的两排数字先按第一排排序,然后再按第二排排序,要求顺序排序

    MapReduce:将下面的两排数字先按第一排排序,然后再按第二排排序,要求顺序排序 文件如下: 这个案例主要考察我们对排序的理解,我们可以这样做: 代码如下(由于水平有限,不保证完全正确,如果发现错 ...

  3. LinkedHashMap如何保证顺序性

    一. 前言 先看一个例子,我们想在页面展示一周内的消费变化情况,用echarts面积图进行展示.如下: 我们在后台将数据构造完成 HashMap<String, Integer> map ...

  4. Stream排序Map集合

    最近小编自己一个人在负责一个项目的后台开发,其中有一部分是统计相关的功能,所以需要一些排序或者分组的操作,之前这种操作小编觉得还是比较麻烦的,虽热有一些现成的工具类,但是工具类的写法也是比较复杂的,但 ...

  5. 排序map

    1.根据map的值,升序排序 Map<String, Integer> map = new TreeMap<String, Integer>(); map.put(" ...

  6. 获取EMF文件内全部文字, 并按照左上到右下的顺序排序

    因为工作要求, 需要对EMF文件文字内容做分析.....SO, 如下代码出现了 懒得加注释了, 反正对外接口属性就那么几个, 根据英文猜吧, 很容易的 说明一下: 这个东西结果会对所有文字内容按照左上 ...

  7. mysql 查询数据时按照A-Z顺序排序返回结果集

    mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ...

  8. C#12种顺序排序

    这篇主要写关于顺序排序的十二种算法,也是我有关算法的第一帖.主要是写,对每种算法的理解与测试. 速度测试,主要根据一千.一万.五万.百万这 四种.速度纪录还是用Stopwatch 这个类.使用随机数R ...

  9. ORACLE自定义顺序排序-转

    ORACLE可以借助DECODE函数,自定义顺序排序: select * from ( select 'Nick' as item from dual union all select 'Viki' ...

随机推荐

  1. request&response

    /* request&response 1.什么是HttpServletRequest HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP ...

  2. GCD学习

    出自简书 : https://www.jianshu.com/p/2d57c72016c6 在 GCD 中有两种队列:串行队列和并发队列.两者都符合 FIFO(先进先出)的原则.两者的主要区别是:执行 ...

  3. 监听 input 内容 改变

    html: <input class="query_str_input" placeholder="搜索您的需求" type="text&quo ...

  4. 备忘-vs2015实用插件

    1. SuperCharger 2. Indent Guides缩进辅助线 3. Smooth Scroll平滑滚动 4. va 5. File Path On Footer 底部显示文件物理路径

  5. centos7安装nginx,以及使用node测试反向代理

    1.添加nginx的安装源 vi /etc/yum.repos.d/nginx.repo 2.输入下面内容,并保存退出 [nginx] name=nginx repo baseurl=http://n ...

  6. [UE4]Spline使用注意事项

    一.如果在Character中使用Spline,则使用Add Spline Mesh Componet的时候,要注意设置Transform.Mobility为Movable 二.使用Predict P ...

  7. springmvc读取服务器磁盘图片,显示于前台页面

    在项目中的config目录下有一个文件,在后台程序中获取 它并使用. springmvc提供一个方法:File file = new ClassPathResource("NonTaxVou ...

  8. Oracle数据库自带表空间的详细说明

    1.SYSAUX表空间 SYSAUX表空间在Oracle Database 10g中引入,作为SYSTEM表空间的辅助表空间.以前一些使用独立表空间或系统表空间的数据库组件现在在SYSAUX表空间中创 ...

  9. bat批量修改图片的名字实现(两种方法)

    问题描述: 业务中遇到需要批量修改大量图片的名字. 如下图,需要修改为图片名字“u=”之后和“,”之前的那一串 解决思路1: bat批处理,网上查找相关代码如下: @echo off SetLocal ...

  10. Three failed attempts of handling non-sequential data

    The Progress of Products Classification Cause now we are considering to classify the product by two ...