当前位置: 首页 > 知识库问答 >
问题:

使用流API对Java列表进行排序[重复]

周承天
2023-03-14

我有以下课程

public class ResourceContributor {

    private Resource resource;

    private Contributor contributor;

    private ContributorRole role;

}

我正在尝试按贡献者名称和角色名称对ResourceContributor列表进行排序。到目前为止,我得到的是:

    List<ResourceContributor> resourceContributorsSorted = resourceContributors.stream()
            .sorted(Comparator.comparing(resourceContributor -> resourceContributor.getContributor().getName()))
            .collect(Collectors.toList());

我已经尝试使用then比较,但还不知道如何使用它。

共有1个答案

晏沈义
2023-03-14

只需将调用链接到thenComping,您将需要类型转换,以免出现编译错误:

resourceContributors.stream()
        .sorted(Comparator.comparing((ResourceContributor resourceContributor) -> resourceContributor.getContributor().getName())
                .thenComparing(resourceContributor -> resourceContributor.getRole().getName()))
        .collect(Collectors.toList());
 类似资料:
  • 我有一个这样的方法: 此方法需要以如下字符串形式返回3个最昂贵项目的产品ID:“item1,item2,item3”。我应该只能使用溪流,我被困在这里了。我应该能够按值对项目进行排序,然后获得产品ID,但我似乎无法使其正常工作。 编辑: 产品ID位于入口类中

  • 我有以下课程 我正在尝试按贡献者名称和角色名称对ResourceContributor列表进行排序。到目前为止,我得到的是: 我试过使用thenComparing,但还不知道如何使用它。

  • 我对从流中排序列表感兴趣。这是我正在使用的代码: 我是不是漏了什么?之后不会对列表进行排序。 它应该根据最低值的项目对列表进行排序。 以及打印方法:

  • 我有一个小问题,希望你能帮我解决。 我有一个名为Entity的类,它有几个属性,其中两个属性是id和实用程序: 然后,我在ArrayList中有几个Entity对象,如下所示: 现在,我想根据公用事业实体对列表进行排序。我使用一个定制的比较器,尝试了几种类似我在这里读到的解决方案: 但是在这条线上: 我遇到了以下错误:int不能被解引用,我不知道如何修复它。你们能帮我解决这个问题或者给出另一个解决

  • 问题内容: 我的清单包含大小等的集合。我尝试这样做,但似乎不起作用。 我想要的最终结果是。 我可以尝试添加在所有的元素和那种出来再做出新的的。但是,有某种班轮吗? 更新: 这可行,但是可以简化吗? 问题答案: @Eugene的回答很甜蜜,因为番石榴很甜。但是,如果您碰巧在类路径中没有番石榴,这是另一种方式: 首先,我将所有集合映射到一个流中,然后对所有元素进行排序,最后,将整个排序后的流收集到集合