我有列表SortCriteria对象。对象包含的属性是sortColumnsortAscending。如果sortAscendingtrue,我需要迭代列表。我需要添加"ASC",否则我需要添加"DESC"

我尝试获取流的升序列表和降序的列表流并合并。

JSON:

"sort_criteria": [{

      "sortAscending": true,

      "sortColumn": "Category"

}]


JAVA逻辑:

List<SortCriteria> listOfSortCriteria=webQueryRequest.getSortCriteria();
            List<SortCriteria> listOfAscending=listOfSortCriteria.stream().filter(e->e.getSortAscending().equals("true")).collect(Collectors.toList());
            List<SortCriteria> listOfDescending=listOfSortCriteria.stream().filter(e->e.getSortAscending().equals("false")).collect(Collectors.toList());
            orderByQuery=ORDER_BY+listOfAscending.stream().map(e->e.getSortColumn()+ " "+"ASC").collect(Collectors.joining(","))+","+listOfDescending.stream().map(e->e.getSortColumn()+" "+"DESC").collect(Collectors.joining(","));


我要一次获得最终构造的结果,而不是获取流的升序列表和降序的列表流并合并。

最佳答案

无论原始问题如何,订单列的顺序都是重要的。
通过分为升序和降序列,您可以更改订单列的顺序!
因此,您需要做的是流式传输原始列表并添加列-每个列都有自己的方向:

orderByQuery = ORDER_BY +
  listOfSortCriteria.stream().map(e->e.getSortColumn() + " " + (e->e.getSortAscending().equals("true") ? "ASC":"DESC"))
    .collect(Collectors.joining(","));

09-04 02:27