异想维度 java_Java实现多字段(维度)复杂排序
//Java 实现多字段排序
HashMap map1 = new HashMap();
map1.put("dataindex0", null);map1.put("dataindex1", 6);map1.put("dataindex2", 1.1);map1.put("id", 1);
HashMap map2 = new HashMap();
map2.put("dataindex0", "2017-12-01");map2.put("dataindex1", 5);map2.put("dataindex2", 1.2);map2.put("id", 2);
HashMap map3 = new HashMap();
map3.put("dataindex0", "2017-12-02");map3.put("dataindex1", 7);map3.put("dataindex2", 2.3);map3.put("id", 3);
HashMap map4 = new HashMap();
map4.put("dataindex0", "2017-12-02");map4.put("dataindex1", 7);map4.put("dataindex2", 3);map4.put("id", 4);
HashMap map5 = new HashMap();
map5.put("dataindex0", "2017-12-03");map5.put("dataindex1", null);map5.put("dataindex2", 9.1);map5.put("id", 5);
HashMap map6 = new HashMap();
map6.put("dataindex0", "2017-12-03");map6.put("dataindex1", 3);map6.put("dataindex2", 8.1);map6.put("id", 6);
List> list = new ArrayList>();
list.add(map6);list.add(map1);list.add(map5);list.add(map4);list.add(map2);list.add(map3);
// System.out.println("Before Sort: " + list);
final String[] orderByCols = {"dataindex0","dataindex1","dataindex2"};
// final String[] orderByCols = {"dataindex0","dataindex1"};
// final String[] orderByCols = {"dataindex0"};
//Mannual OrderBy
Collections.sort(list,new Comparator() {
@Override
public int compare(Map o1, Map o2) {
return recursion(o1, o2, 0);
}
private int recursion(Map o1, Map o2, int i) {
if (o1.containsKey(orderByCols[i]) && o2.containsKey(orderByCols[i])) {
Object value1 = o1.get(orderByCols[i]);
Object value2 = o2.get(orderByCols[i]);
if (value1 == null && value2 == null) {
if ((i+1) < orderByCols.length) {
int recursion = recursion(o1, o2, i+1);
return recursion;
}else{
return 0;
}
}else if(value1 == null && value2 != null){
return 1;
}else if(value1 != null && value2 == null){
return -1;
}else{
if (value1.equals(value2)) {
if ((i+1) < orderByCols.length) {
return recursion(o1, o2, i+1);
}else{
return 0;
}
}else{
if (value1 instanceof String && value2 instanceof String) {
return value1.toString().compareTo(value2.toString());
}else{
return new BigDecimal(value1.toString()).compareTo(new BigDecimal(value2.toString()));
}
}
}
}else{
System.out.println(" ** The current map do not containskey : " + orderByCols[i] + ",or The value of key is null **");
return 0;
}
}
});
异想维度 java_Java实现多字段(维度)复杂排序相关推荐
- 口径、维度、指标和字段
口径.维度.指标和字段 比如,要得到北京地区,上海地区,深圳地区的销售总额. 字段:一般关系型数据表的表头都是由字段组成. 前提是已经有一张表. 口径就是完成这个需求的逻辑:首先对地区字段进行分组,然 ...
- 数据仓库建模方法/范式建模法/维度建模法/事实表/维度表/优缺点/建模流程/概念建模/逻辑建模/物理建模
常见的有 范式建模法.维度建模法.实体建模法等,每种方法从本质上将是从不同的角度看待业务中的问题,不管是从技术层面还是从业务层面,都代表了哲学上的一种世界观. 1 范式建模法(Third Normal ...
- 理解维度数据仓库——事实表、维度表、聚合表
一.事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为"事实表".一个按照州.产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例类似. 在这些事实表的示 ...
- 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)...
这篇文章是基于上一篇 SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 继续讲解多维数据集维度用法中的事实维度. 事实维度,顾名思义就是把事实表 Fact ...
- 「机器学习速成」嵌套:高维度数据映射到低维度空间
https://www.toutiao.com/a6707188638792286727/ 大家好,今天我们学习[机器学习速成]之 嵌套:高维度数据映射到低维度空间. 嵌套将高维度数据映射到低维度空间 ...
- HAWQ取代传统数仓实践(十)——维度表技术之杂项维度
一.什么是杂项维度 简单地说,杂项维度就是一种包含的数据具有很少可能值的维度.事务型商业过程通常产生一系列混杂的.低基数的标志位或状态信息.与其为每个标志或属性定义不同的维度,不如建立单独的将不同维度 ...
- 数据仓库之建模 维度表 事实表 维度建模三种模式 如何维度建模缓慢变化的维度 建模体系
数据仓库之建模 ER建模 维度表和事实表 维度建模三种模式 如何维度建模 什么是缓慢变化的维度 最常见的三种数据仓库建模体系 联机分析处理 OLAP 元数据(Metadata) 数据仓库建模包含ER建 ...
- 054_《奇思异想编程序Delphi篇》
<奇思异想编程序Delphi篇> Delphi 教程 系列书籍 (054) <奇思异想编程序Delphi篇> 网友(邦)整理 EMail: shuaihj@163.com 下载 ...
- 成功解决 绘图时行坐标名或列坐标名出现f0、f1、f2、f3、f4、f5(或者Column_0、Column_1、Column_2、Column_3)等命名而不是想要的具体对应字段命名
成功解决 绘图时行坐标名或列坐标名出现f0.f1.f2.f3.f4.f5(或者Column_0.Column_1.Column_2.Column_3)等命名而不是想要的具体对应字段命名 目录 解决问题 ...
最新文章
- 【有图有真相】静态NAT、动态NAT、PAT、端口映射的详细配置过程
- python下载文件到指定文件夹-Python 获取指定文件夹下的目录和文件的实现
- (转)目前比较全的CSS重设(reset)方法总结
- 2019 年百度之星·程序设计大赛 - 初赛一
- leetcode 476. Number Complement | 476. 数字的补数(位运算)
- python嵩天第二版第五章_如何避免从入门到放弃——python小组学习复盘
- 大数据之Spark集群安装及简单使用
- linux进程管理子系统分析,linux进程管理子系统简要分析
- 收藏~10年软件测试人员的工作方法进阶汇总
- photon 服务器操作系统,photon 云服务器
- 瑞芯微RK3128-微信Airkiss2.0配网功能调试及实现
- [UESTC SC T4] Chika 的烦恼
- 计算机组成原理第三章ppt,计算机组成原理第三章幻灯片(白中英版).ppt
- 完整版28K易支付系统源码+第四方Oreo支付源码
- Java 将Word转为HTML的方法
- 墨菲定律吉德林法则吉尔伯特定律沃尔森法则福克兰定律
- 苹果 iPhone、Mac日历订阅源收集
- linux中tac的用法,如何在Linux中使用“cat”和“tac”命令与示例
- 因为1024图片 AppIcon 图标包含了透明度导致app上传ios 代码报错
- 成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)
热门文章
- linux 下 storm环境搭建,Storm在Ubuntu环境下的单机部署
- mysql 内存溢出_mysql - MySQL在非常大的表上计算性能 - 堆栈内存溢出
- vc mysql 图片_VC连接MySQL
- python如何设计系统界面教程_python中pycharm软件界面介绍与配置
- java高级编程期末考试题_java高级编程考题
- OFDM技术及其应用
- 前端开发 —— BOM
- WPF快速入门系列(2)——深入解析依赖属性
- _编程语言_C++_Lambda函数与表达式
- Mac MySQLdb模块安装,可算解决了