我目前正在研究Rest API,在一个get方法中,假设以json格式返回一个对象数组,我现在需要通过作为参数传递给该方法的字段对结果进行排序。例如,考虑对象
public class ExampleType {
int firstField ;
String secondField ;
}
现在根据要求,Rest API用户应该能够作为参数传递" firstField"或" secondField"我应该使用这个字段对包含结果对象的数组进行排序。
显然我的模型并不像示例那么简单,我确实有超过15个字段可能是我需要排序的字段,因此此时if else语句不是一个选择。我的问题是,是否有人对休息api有类似的要求,如果是这样,你是如何解决它的?或者对我的问题的优雅解决方案可能提出的任何建议都将非常感激。
答案 0 :(得分:0)
您应该创建一个Comparator
,然后使用它来对数据进行排序。
比较器可以存储在静态映射中以避免切换/情况if / else:
map.put("fieldName", Comparator.comparing(ExampleType::getFirstField));
您可以使用thenComparing
方法组合两个或更多比较器。
唯一的另一种选择是使用反射创建适当的比较器。
注意:API消费者的要求通常不是应在API本身中实现的要求。您可能还会认为排序输出实际上是显示问题,而不是API需要关注的内容。
这取决于具体情况,如果需要对数据进行分页,那么除了在API级别进行排序之外,您可能没有其他选择。