我见过很多排序对象列表的方法,如果您知道传入的键,或者至少知道传入的键的数量,这些方法就可以很好地工作。问题是在我的情况下,我不知道用户是否会发送1个或10个密钥。
目前,我为每个键都有一个巨大的switch语句,但显然它的伸缩性很差。它只是将一堆“thenComparing”链接在一起。
我在这里找到了一个示例,它看起来有点帮助,但我不知道如何构建一个比较器流。
How-to chain and apply a stream of comparators?
寻找一个链接或任何信息片段,以填补如何做到这一点的空白。
这一切都是在用户调用webservice时工作的,他们会这样调用它
https://host.com/path?sort=[{"attribute1": "ASC"}, {"attribute2": "DESC"}]发布于 2018-08-14 23:15:46
如果你能构建一个比较器列表,你可以使用如下代码:
public class MultiComparator<T> implements Comparator<T> {
private final List<Comparator<T>> comparators;
MultiComparator(List<Comparator<T>> comparators){
this.comparators = comparators;
}
@Override
public int compare(T t1, T t2) {
int r = 0;
for(Comparator c : comparators){
r = c.compare(t1,t2);
if(r != 0){
return r;
}
}
return r;
}
}(虽然不太像java8)
https://stackoverflow.com/questions/51844302
复制相似问题