首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于未知数量的键对对象列表进行排序

基于未知数量的键对对象列表进行排序
EN

Stack Overflow用户
提问于 2018-08-14 22:52:38
回答 2查看 149关注 0票数 5

我见过很多排序对象列表的方法,如果您知道传入的键,或者至少知道传入的键的数量,这些方法就可以很好地工作。问题是在我的情况下,我不知道用户是否会发送1个或10个密钥。

目前,我为每个键都有一个巨大的switch语句,但显然它的伸缩性很差。它只是将一堆“thenComparing”链接在一起。

我在这里找到了一个示例,它看起来有点帮助,但我不知道如何构建一个比较器流。

How-to chain and apply a stream of comparators?

寻找一个链接或任何信息片段,以填补如何做到这一点的空白。

这一切都是在用户调用webservice时工作的,他们会这样调用它

代码语言:javascript
运行
复制
https://host.com/path?sort=[{"attribute1": "ASC"}, {"attribute2": "DESC"}]
EN

Stack Overflow用户

发布于 2018-08-14 23:15:46

如果你能构建一个比较器列表,你可以使用如下代码:

代码语言:javascript
运行
复制
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)

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51844302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档