实际应用场景是接的实时数据,数据量大概有3600条,返回给客户端还需要进行排序、分页
- 注意点:
- 对于map中的排序key对应的value如果是字符串类型的数字,需要转换成数字类型(如BigDecimal、Integer)再排序,对于字符串类型的数字,是达不到对数字排序的效果的(按照字符串的首个数字排序)
- Comparator.comparing(value),value不能为null,会报空指针异常,这里的处理是使用stream将null的map排出后再排序,将null的接到返回的List的后面
- 排序使用了java8 stream中的filter、sorted、切片分页方法
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
public class SortUtil {
private final static String SORT_TYPE = "desc";
public static List<Map<String, Object>> sortStock(String keyWord,String sortType,
List<Map<String, Object>> stockList){
List<Map<String, Object>> collect = new ArrayList<>();
List<Map<String, Object>> subList1;
List<Map<String, Object>> subList2;
switch (keyWord){
case "name":
if (SORT_TYPE.equals(sortType)){
collect = stockList.stream()
.sorted(Comparator.comparing(SortUtil::getName).reversed())
.collect(Collectors.toList());
}else {