我在M2公司做架构之数据排序

数据排序主要针对后端而言,后端将数据排序好,前端直接拿来渲染即可。数据排序的核心围绕着业务规则,由业务规则决定倒序(从大到小)还是正序(从小到大)。确定了业务规则后,实现层面则相对简单。通用型方式如下:

  • 基于List排序;
  • 基于Map排序;

一、基于List排序

基于List排序通用办法(基于Java8的新特性实现):

1
2
3
4
5
6
7
# 倒序
List<T> api_list = apiData
.stream().sorted(Comparator.comparing(T::getID).reversed()).collect(Collectors.toList());

# 正序
List<T> api_list = apiData
.stream().sorted(Comparator.comparing(T::getID).collect(Collectors.toList());

不过需要注意的是对应的T中的需要排序的属性必须为Long、Integer或BigDecimal、Double、Float这样的数据类型才行,否则就会导不对。

二、基于Map排序

由于Map本身就是无序的,通过一些方式让其有序,main方法输出的是没问题的,但是一旦到了JSON响应出去就不对了,无论是LinkedHashMap还是TreeMap都没有效果,这个问题后面我会有一个专题专门讲解分析的,这里先不讲。基于Map排序,针对key无需排序的情况下,将对应value(当value是List的情况下)按照基于List排序规则执行即可,通常来说也是可以的(适用场景Map<String,Object>)。

三、总结

List排序和Map排序是非常有用的,它能有效的降低前后端接口对接的成本(时间成本、维护成本等),以此达到前后端开发的最理想状态,即后端负责具体数据的业务逻辑处理,前端只需拿来渲染即可。

文章目录
  1. 一、基于List排序
  2. 二、基于Map排序
  3. 三、总结