我有列表SortCriteria
对象。对象包含的属性是sortColumn
和sortAscending
。如果sortAscending
是true
,我需要迭代列表。我需要添加"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(","));