如何在Java流API中应用if / else逻辑?

时间:2019-06-20 11:42:14

标签: java

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

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

JSON:

"sort_criteria": [{

      "sortAscending": true,

      "sortColumn": "Category"

}]

JAVA LOGIC:

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(","));

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

1 个答案:

答案 0 :(得分:3)

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

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