TreeMap 按照value值排序

按照value里gmn_no进行排序如果相等按照di_no排序

        TreeMap<Integer, Map> zeroTreeMap = new TreeMap<Integer, Map>(zeroList);	

zeroTreeMap 里值为
{
1={gmn_no=1,di_no=3,scr_no=3}
2={gmn_no=3,di_no=1,scr_no=3}
3={gmn_no=2,di_no=3,scr_no=3}
4={gmn_no=1,di_no=2,scr_no=3}
}

先创建一个list用来存放排序后的值

		List<Map.Entry<Integer, Map>> list = new ArrayList<Map.Entry<Integer, Map>>(zeroTreeMap.entrySet());

重写Comparator方法进行排序

  • 返回负数表示:o1 小于o2,
  • 返回0 表示:o1和o2相等,
  • 返回正数表示:o1大于o2。
		Collections.sort(list, new Comparator<Map.Entry<Integer, Map>>() {
			@Override
			public int compare(Entry<Integer, Map> o1, Entry<Integer, Map> o2) {
				// TODO Auto-generated method stub
				if ((Integer) o1.getValue().get("gmn_no") < (Integer) o2.getValue().get("gmn_no")) {
					return -1;
				}
				if ((Integer) o1.getValue().get("gmn_no") > (Integer) o2.getValue().get("gmn_no")) {
					return 1;
				}
				if (o1.getValue().get("gmn_no") == o2.getValue().get("gmn_no")) {
					if ((Integer) o1.getValue().get("di_no") < (Integer) o2.getValue().get("di_no")) {
						return -1;
					}
					if ((Integer) o1.getValue().get("di_no") > (Integer) o2.getValue().get("di_no")) {
						return 1;
					}
				}
				return 0;
			}
        });

完整代码

private List<Entry<Integer, Map>> getZeroTreeMapOrderBy(List<Integer> revLista, Integer systemNoa,
			String tableName) {
		List<Integer> revList = revLista;
		Integer systemNo = systemNoa;

		Map<Integer, Map> zeroList = genchiListDatailMapper.selectAllTable(0, systemNo,
				tableName);
		zeroList.remove(null);
		TreeMap<Integer, Map> zeroTreeMap = new TreeMap<Integer, Map>(zeroList);
		for (int i = 0; i < revList.size(); i++) {
			Map<Integer, Map> saList = genchiListDatailMapper.selectAllTable(revList.get(i), systemNo, tableName);
			for (Integer key : saList.keySet()) {
				zeroTreeMap.put(key, saList.get(key));
			}
		}
		List<Map.Entry<Integer, Map>> list = new ArrayList<Map.Entry<Integer, Map>>(zeroTreeMap.entrySet());
		Collections.sort(list, new Comparator<Map.Entry<Integer, Map>>() {
			@Override
			public int compare(Entry<Integer, Map> o1, Entry<Integer, Map> o2) {
				// TODO Auto-generated method stub
				if ((Integer) o1.getValue().get("gmn_no") < (Integer) o2.getValue().get("gmn_no")) {
					return -1;
				}
				if ((Integer) o1.getValue().get("gmn_no") > (Integer) o2.getValue().get("gmn_no")) {
					return 1;
				}
				if (o1.getValue().get("gmn_no") == o2.getValue().get("gmn_no")) {
					if ((Integer) o1.getValue().get("di_no") < (Integer) o2.getValue().get("di_no")) {
						return -1;
					}
					if ((Integer) o1.getValue().get("di_no") > (Integer) o2.getValue().get("di_no")) {
						return 1;
					}
				}
				return 0;
			}
        });

		sigInfo = genchiListDatailMapper.selectRevMSigDetail(0, systemNo, tableName);
		return list;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值